【发布时间】:2015-03-10 16:20:20
【问题描述】:
这是我的代码:
//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 个临时变量并成功创建团队对象并成功将对象添加到 leageTeams mutablearray,同时位于成功代码块内。
但是,应用程序离开成功块的那一刻,leagueTeams 数组就消失了。即使是空数组,它也不存在于内存中,就像在执行成功块之前一样。
尝试将数据传递给代码块内的外部变量时,我可能做错了什么,但是所有其他类似的问题都无法及时从服务器获取数据,但在我的情况下,数据请求总是成功的,并且 JSON 响应并将其转换为 NSDIctionary 都可以正常工作....所以任何人都可以帮忙吗?谢谢
【问题讨论】:
-
将
__block添加到数组的定义中,并且在将 aTeam 回调添加到主线程时添加到完成块中。[NSoperationQueue mainQueue] addOperationBlock:
标签: ios objective-c json afnetworking