我有一個關於如何在completionHandler塊中設置我的NSArray的問題。我成功地爲我的完成塊中的NSArray賦值,但是一旦我嘗試NSLog NSArray值超出完成塊,它會給出0.如何在completionHandler中設置一個值?
這是我的完整代碼。
//
// HomeTVC.m
// ABOX
//
// Created by Zero on 11/18/15.
// Copyright © 2015 Zero. All rights reserved.
//
#import "HomeTVC.h"
#import "facebook.h"
@interface HomeTVC()<UITableViewDataSource, UITableViewDelegate>
{
NSDictionary *userPageLikesParams;
NSArray *pagesInfo;
facebook *fb;
}
@end
@implementation HomeTVC
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.delegate = self;
self.tableView.dataSource = self;
fb = [[facebook alloc] init];
userPageLikesParams = @{@"fields": @"about,name,created_time",@"limit": @"5"} ;
[fb getUserPagelikes:userPageLikesParams completionHandler:^(NSDictionary *pagesResult) {
pagesInfo = [[NSArray alloc] init];
pagesInfo = pagesResult[@"data"];
// NSArray *p = pagesResult[@"data"];
// [self pages:p];
}];
}
//- (void)pages:(NSArray*)pageInfo {
//
// self.pagesInfo = pageInfo;
// NSLog(@"fb pages result ayam : %@", self.pagesInfo[0]);
// NSLog(@"array counzz : %d", (int)self.pagesInfo.count);
//}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// here I got 0, how can I solve this problem?
NSLog(@"table count : %d", (int)pagesInfo.count);
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
// Configure the cell...
return cell;
}
@end
在此先感謝。
確保在完成塊完成之後記錄數組 – ibnetariq
爲什麼要創建一個空數組,然後在下一個語句中拋出它? – Avi
通過聲明__block檢查NSArray * pagesInfo;而不是NSArray * pagesInfo; –