我試圖從遠程文件中獲取一些數據。我在異步請求塊內創建了一個_items數組,它實際上已經是數據了,但是當我的控制器中的其他任何地方調用_items時仍然是空的。如何使用異步數據
我不知道,但我猜測,因爲數據加載異步,當調用_items仍然是空的。那麼如何在異步任務完成後如何將數組與數據結合使用呢?
- (IBAction)fetchEvent
{
_items = [[NSMutableArray alloc] initWithCapacity:5];
NSString *link = [NSString stringWithFormat:@"url...?id=%@", self.eId];
NSURL *url = [NSURL URLWithString:link];
NSURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError)
{
if (data.length > 0 && connectionError == nil)
{
NSDictionary *match = [NSJSONSerialization JSONObjectWithData:data
options:0
error:NULL];
NSArray *odds = [match objectForKey:@"odds"];
OddsItem *item;
for (NSDictionary *books in odds) {
item = [[OddsItem alloc] init];
item.oddsBook = [odds objectForKey:@"book"];
[_items addObject:item];
}
}
}];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self fetchEvent];
}
一種可能是有你完成塊張貼通知的數據加載完成和視圖控制器做任何你需要用'_items'進行反應,該通知時。您也可以將一個塊傳遞給它可以在完成處理程序結束時執行的'fetchEvent'。 – 2014-09-27 16:16:24