ios - NSMutableArray 在 for 循环后不保存添加的项目

标签 ios facebook facebook-graph-api nsmutablearray persistent

我尝试调用 Facebook Graph 并将一些项目添加到数组中。这些项目被添加到一个 for 循环中,数组看起来很好。但是在 for 循环之后,项目消失了。

我将 xcode 4.5 与 Facebook SDK 3.1 结合使用。

我错过了什么?

TableViewController.m

#import "TableViewController.h"

@interface TableViewController ()
@end

@implementation TableViewController {
    NSMutableArray *recipes;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    recipes = [NSMutableArray arrayWithObjects:@"Egg Benedict", nil];
    [recipes addObject:@"foobar"];
    NSLog(@"recipes before FBRquestConnection: %@", recipes);

    [FBRequestConnection
     startWithGraphPath:@"search?type=place&center=37.785834,-122.406417"
     completionHandler:^(FBRequestConnection *connection,
                         id result,
                         NSError *error) {
         if (!error) {
             for (id item in [result objectForKey:@"data"]) {
                [recipes addObject:[item objectForKey:@"name"]];
             }
         NSLog(@"recipes after for-loop: %@", recipes);
         NSLog(@"amount of recipes after for-loop: %u", [recipes count]);
         }
     }];
    NSLog(@"amount of recipes after FBRequestConnection: %u", [recipes count]);
}

调试控制台输出

2012-12-27 23:09:44.056 barbar[3481:19a03] recipes before FBRquestConnection: (
    "Egg Benedict",
    foobar
)
2012-12-27 23:09:44.056 barbar[3481:19a03] amount of recipes after FBRequestConnection: 2
2012-12-27 23:09:44.516 barbar[3481:19a03] recipes after for-loop: (
    "Egg Benedict",
    foobar,
    "Union Square, San Francisco",
    "Benefit Cosmetics",
    "San Francisco | The Official Guide",
    "BareMinerals by Bare Escentuals",
    "Viator.com",
    "Bleacher Report",
    "Downtown San Francisco",
    "AMC Metreon 16",
    "Cheesecake Factory",
    SquareTrade,
    "Westfield San Francisco Centre",
    "Bloomingdale's San Francisco",
    "Macy's San Francisco Union Square",
    Xoom,
    "Parc 55 Hotel",
    "Pottery Barn",
    "AT&T Park",
    Bebo,
    Snapfish,
    "Hilton San Francisco Union Square",
    uTorrent,
    "The Westin St. Francis",
    TRUSTe,
    "Apple Retail Store - San Francisco"
)
2012-12-27 23:09:44.516 barbar[3481:19a03] amount of recipes after for-loop: 26

干杯--jerik

最佳答案

您的项目已添加到图形调用的完成 block 中。

当您执行 Api 调用时,它会转到服务器并且不会触发完成 block ,直到 Web 请求返回您的结果。

因此,当您的最后一行命中时,api 调用仍在请求中并且尚未返回。

关于ios - NSMutableArray 在 for 循环后不保存添加的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062033/

相关文章:

Django 2.0 allauth Facebook 2018

Facebook 发送权限

c# - 使用 asp.net C# sdk 的 facebook 中仅限粉丝的内容

ios - 在派生数据和应用程序(iOS、Google Drive SDK)中实现的类

ios - Apple WatchKit,构建具有与操作系统相同的 UI 的应用程序

iphone - 从相册照片中获取带有元数据的照片文件

java - 如何使用 spring-social 从 Facebook 获取个人资料图片 url?

iphone - 开发者可以将 "Places"添加到 Facebook checkin 吗?

php - 我的网站的 Facebook 照片库小部件?

IOS,Swift : creating a split screen with 2 views, 带动画