2012-10-11 67 views
1

我非常新的Xcode和知道一些編碼,但我試圖實現在我的應用程序中使用API​​。這就是我想要做的。Xcode HTTP GET GETQUEST之間的意見

  • 從我的第一個viewcontroller採取地理位置。
  • 從我的第二個視圖控制器中取幾個變量。
  • 使用所有收集的變量並生成我的HTTP請求
  • 在我的第三個視圖控制器上顯示返回的數據。

我已經建立了我的viewcontrollers並讓我的第一個viewcontroller已經定位了我。

任何幫助將非常appreiciated。我在山獅上使用最新的xcode,這是需要發送的請求http://yourtaximeter.com/api/?key=...

回答

0

不要在您的視圖控制器中實現邏輯,對所有連接使用另一個類。例如「ConnectionManager」類或「DataManager」類。檢查出this的問題。

您還可以檢查出AFNetworking並使用它們的AFHTTPClient爲您自己的api創建子類。

0

在請求前的VC上,聲明一個屬性(和@synthesize)來保留網絡請求的結果。

@property (nonatomic, strong) NSData *responseData; 

然後在任何事件觸發的要求,象這樣開始:

NSString *urlString = /* form the get request */ 
NSURL *url = [NSURL urlWithString:urlString]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

// consider doing some UI on this VC to indicate that you're working on a request 

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (!error) { 
     self.responseData = data; 
     // hide the "busy" UI 
     // now go to the next VC with the response 
     [self performSegueWithIdentifier:@"ThridVCSegue" sender:self]; 
    } 
}]; 

然後響應數據傳遞到第三VC這樣的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([[segue identifier] isEqualToString:@"ThridVCSegue"]) { 
     ThirdViewController *vc = (ThirdViewController *)[segue destinationViewController]; 
     [vc dataFromHTTPRequest:self.responseData]; 
    } 
} 

這是假設你」將使用ARC,故事板,並定義該segue。 ThirdViewController需要一個公共方法來接受http響應數據。