ios:在AFNetworking成功回调中更新UITableView

时间:2013-04-25 14:16:10

标签: ios objective-c objective-c-blocks

我正在尝试从API加载数据并将其显示在UITableView内。我使用AFNetworking进行网络调用,但现在我遇到了一个问题:我无法在成功块中访问myTableViewself

@property (weak, nonatomic) IBOutlet UITableView *myTableView; 
@property (nonatomic,retain) NSMutableArray *myDataSource;

@synthesize featuredProductsTableView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    NetworkManager *networkManager = [NetworkManager  getInstance];
    myDataSource = [NSMutableArray array]; 

    [networkManager getPath:@"example.com" parameters:nil success:^(AFHTTPRequestOperation *operation, id JSON) {
        [myDataSource addObjectsFromArray:JSON];

        [myTableView reloadData]; 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"%@",error);
    }];
}

调试代码显示在块内部我无法访问selfmyDataSourcemyTableView中的任何内容。

我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:0)

您应该使用:

__block myDataSource = [NSMutableArray array];

您还可以阅读:

What does the "__block" keyword mean?

答案 1 :(得分:-2)

在阻止之前声明这一点:

__block typeof(self) this = self;

至少,这样您就可以通过调用self来阻止来自阻止内部的this

编辑:这不是我要走的路,我的错误。见How do I avoid capturing self in blocks when implementing an API?