我将Facebook用户信息数据放入 NSMutableArray ,我在请求方法调用中使用 for 循环。问题是我无法在方法调用之外获取数据。 NSLog 中的第一个 self.items 可以显示我想要的数据,其中包含我输入的所有全名。但是, NSLog 中的第二个 self.items 是一个空 NSMutableArray 。
在.h文件中:
@property (strong,nonatomic) NSMutableArray *items;
初始化数组:
self.items = [[NSMutableArray alloc] init];
这是我的代码:
- (IBAction)reloadFriendList:(id)sender {
FBRequest *request = [FBRequest requestForMyFriends];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
NSString *space = @" ";
for (id<FBGraphUser> user in result[@"data"]) {
NSArray *array = [[NSMutableArray alloc] initWithObjects:[user first_name], space, [user last_name], nil];
NSString *fullName = [array componentsJoinedByString:@""];
[self.items addObject:fullName];
}
NSLog(@"%@",self.items);
}];
NSLog(@"%@",self.items);
}
有人能告诉我发生了什么吗?谢谢!
答案 0 :(得分:3)
我认为你并不完全明白这里发生了什么。完成处理程序块在请求完成时执行,而完成处理程序块之后的NSLog语句在您调用[request startWithCompletionHander ...]之后立即执行。所以这是按时间顺序排列的事件:
答案 1 :(得分:2)
处理程序是异步的,因此在获取数据之前很久就会进行调用之外的日志消息。