视图之间的 Xcode HTTP GET REQUEST
Posted
技术标签:
【中文标题】视图之间的 Xcode HTTP GET REQUEST【英文标题】:Xcode HTTP GET REQUEST between views 【发布时间】:2012-10-11 19:03:34 【问题描述】:我对 xcode 非常陌生,并且知道一点编码,但我正在尝试在我的应用程序中实现 api 的使用。这就是我想要做的。
从我的第一个视图控制器获取地理位置。 从我的第二个视图控制器中获取几个变量。 使用所有收集的变量并生成我的 HTTP 请求 在我的第三个视图控制器上显示返回的数据。我已经设置了我的视图控制器,并且我的第一个视图控制器已经找到了我。
任何帮助将不胜感激。我在山狮上使用最新的xcode,这是需要发送的请求http://yourtaximeter.com/api/?key=...
【问题讨论】:
【参考方案1】:不要在视图控制器中实现逻辑,为所有连接使用另一个类。例如“ConnectionManager”类或“DataManager”类。查看this问题。
您也可以查看AFNetworking 并使用他们的AFHTTPClient 为您自己的api 创建一个子类。
【讨论】:
【参考方案2】:在请求前的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、故事板并定义该转场。 ThirdViewController 需要一个公共方法来接受 http 响应数据。
【讨论】:
以上是关于视图之间的 Xcode HTTP GET REQUEST的主要内容,如果未能解决你的问题,请参考以下文章