0

我目前正在尝试将用户的 Facebook 好友加载到 NSMutableArray 中。但是,当我使用[users addObject: friend.name];它时,它不会将它添加到代码块之外的数组中。我在这里想念什么?此外,我正在尝试接收朋友的数量,这在代码块之外也不起作用。我在这里做错了什么?

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                              NSDictionary* result,
                                              NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    users = [[NSMutableArray alloc] init];

    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) {

        NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
        [users addObject:friend.name];
        NSLog(@"%@",users);
    }
}];

完整代码在这里: http: //pastie.org/private/elynlgrkctakioi8pmtta

4

1 回答 1

0

是的,它被添加到数组中,但我们必须等待一段时间才能完成块过程。我正在取朋友并存储在NSMutableArray. 并在延迟一段时间后使用它。我正在使用下面的代码。

 [FBSession setActiveSession:[self appDelegate].session];
    FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                              NSDictionary* result,
                                              NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    users = [[NSMutableArray alloc] init];

    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) 
    {
         NSLog(@"name : %@",[friend name]);

         [tempArray addObject:friend];
      }
}];

[self performSelector:@selector(afterFetchingFbFriend:) withObject:tempArray afterDelay:10.0];

在 10.0 延迟中,它完成了块过程,我的数组中有所有的朋友。然后我处理数组的方法是:

-(void)afterFetchingFbFriend:(NSMutableArray *)tempArray
{
     //do something.
}

如果没有进入 10.0 延迟时间,则增加它,因为它取决于互联网速度,因此获取朋友的时间可能会有所不同。这个对我有用。

于 2014-07-11T04:32:56.670 回答