【发布时间】:2014-08-11 14:55:49
【问题描述】:
我对 NSURLConnection 委托有疑问。只是我需要根据该结果从服务器获取结果,我会做一些事情。 问题是:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
方法终于调用了,我在这部分收到了答案。然后我不能使用来自服务器的结果。
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"DidfinishLaunch started");
self.json = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:nil];
if (!self.parsedJsonContent) {
self.parsedJsonContent = [[NSMutableArray alloc]init];
}
for (int i=0; i<self.json.count; i++) {
NSString *result = [self.json objectAtIndex:i];
self.user.result = result;}
}
}
当我想在 MainViewController 中使用 result 的值时:
NSLog(@"result: %@",[self.jsonProcess GetJsonResultForLogin]);
它是空的。那么我要如何获取 result 的值,因为 result 的值是在最后调用的方法 connectionDidFinishLoading 中填写的。
【问题讨论】:
-
您在
didReceiveData中构建responseData的方式存在问题,或者您从服务器收到的响应不是有效的 JSON。如果 JSON 转换返回nil、NSLog(@"responseData: %@", [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding]);并查看responseData包含的内容。 -
调试 101:将问题分解为基本语句。调试或记录值。检查。在这种情况下
NSLog("responseData: %@", self.responseData);并检查您从服务器返回的内容。 -
结果没有问题,它是作为“记录存在”来的,但是最后执行了didFinishLoading方法,同时mainViewcontroller类中的所有其他方法都完成了。那么我将如何将结果发送回 mainViewControllar 类并做我想做的事。
-
[self.jsonProcess GetJsonResultForLogin] 在做什么?是在启动下载吗?
-
@AhmetNM 如果您担心
didReceiveData异步完成这一事实,您可以将代码放入connectionDidFinishLoading中以启动视图控制器的更新(例如,如果它是一个表格视图控制器,请致电[self.tableView reloadData])。
标签: objective-c delegates nsurlconnection