[英]iOS Objective-C AFNetworking dataTaskWithRequest:completionHandler: can't retrieve data from inside completition block
这是我的代码:
//create array with all the teams
NSMutableArray *leagueTeams = [[NSMutableArray alloc] init];
//send request
[[sessionManager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
NSDictionary *responseFromJSONDictionary = (NSDictionary *) responseObject;
//copy the team's attributes into temp variables
NSString *tempTeamIDCode = [responseFromJSONDictionary objectForKey:@"teamCode"];
NSString *tempTeamName = [responseFromJSONDictionary objectForKey:@"teamName"];
NSInteger tempTeamPoints = [(NSNumber *) [responseFromJSONDictionary objectForKey:@"teamPoints"] integerValue];
//use temp variables to create a temporary team
Team *aTeam = [[Team alloc] initWithTeamIdCode:tempTeamIDCode andTeamName:tempTeamName andLeaguePoints:tempTeamPoints];
//add team to array
[leagueTeams addObject:[aTeam copy]];
}]resume];
我正在尝试制作一个从服务器检索JSON数据的应用程序。 现在,我正在使用静态JSON来检索条目。 我使用断点来跟随变量值。 该应用程序成功检索了JSON数据,成功创建了3个临时变量,并成功创建了team对象,并将该对象成功添加到leageTeams mutablearray中,同时位于成功代码块内。
但是,当应用程序离开成功块时,LeagueTeams数组就会消失。 它像空数组一样不存在于内存中,就像执行成功块之前一样。
我试图将数据传递到代码块内的外部变量时可能做错了很多,但是所有其他类似的问题都存在无法及时从服务器获取数据的麻烦,但是在我的情况下,数据请求始终成功,并且将JSON响应并将其转换为NSDICtionary都可以正常工作。...所以有人可以帮助吗? 谢谢
好的,发生的是“ dataTaskWithRequest:completionHandler:”方法是异步的! 一旦启动程序,程序将不等待其返回值,而是继续执行其下一行。 因此,您在此方法下编写的代码可能比完成处理程序中的代码先执行。 因此,您可以做的是在完成处理程序返回所需值之后,触发Notification或调用某些委托方法以运行任何代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.