1

我对 xcode 非常陌生,并且知道一些编码,但我正在尝试在我的应用程序中实现 api 的使用。这是我正在尝试做的事情。

  • 从我的第一个视图控制器中获取地理位置。
  • 从我的第二个视图控制器中获取几个变量。
  • 使用所有收集的变量并生成我的 HTTP 请求
  • 在我的第三个视图控制器上显示返回的数据。

我已经设置了我的视图控制器,并且我的第一个视图控制器已经找到了我。

任何帮助将不胜感激。我在山狮上使用最新的 xcode,这是需要发送的请求http://yourtaxmeter.com/api/?key=...

4

2 回答 2

0

不要在视图控制器中实现逻辑,为所有连接使用另一个类。例如“ConnectionManager”类或“DataManager”类。看看这个问题。

您还可以查看AFNetworking并使用他们的AFHTTPClient为您自己的 api 创建一个子类。

于 2012-10-11T19:13:26.673 回答
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 响应数据。

于 2012-10-11T19:36:03.867 回答