我有一些Objective-C代码,使一个异步(我认为笑)调用服务器,但我不太确定,处理从服务器回来的响应的正确方法是什么?如何从NSURLConnection远程服务器调用返回的对象中获取值?
我做这样的事情:
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
// ***************
// TODO: ok I dont really understand what this is
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
// **************
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
...
因为我是很新的Objective-C的,我不能肯定,甚至哪里看如何从对象,或者如何处理得到的值NSData或NSResponse对象。
我知道我的服务器有时会发回一个JSON响应,有时只是一个字符串,如“OK”
此外,添加到我的困惑是本教程:
根据我应该有几个独立的功能,如
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
或
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
所以我的问题是从请求中获得来自3个变量(错误,响应,数据)的基本返回数据的方式以及我应该何时实现我提到的教程中提到的方法?它看起来像教程有一个更优雅的解决方案...但我不知道是否它的矫枉过正。
哇 - 惊人的回应!谢谢!! – Genadinik 2012-07-08 23:37:51
随时,我的朋友。 – CodaFi 2012-07-08 23:38:06
自iOS5.0起,CocoaTouch包含['NSJSONSerialization'](https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html),它直接与'NSData'对象一起工作。他们不必转换为字符串。另外,你对'NSOperationQueue'的描述,以及“在一个**线程中一个一个地执行”的建议建议串行操作,但是默认情况下操作队列同时执行它的操作。 – 2012-07-08 23:39:56