正しく返されるJSONの結果をテーブルビューに入れようとしています。問題は、結果をインスタンス変数に割り当てても、情報が返されるブロック内のデータにしかアクセスできないことです。私のコードは次のとおりです。
NSURL *url = [NSURL URLWithString:@"http://www.my_url.com.br/app/?type=list&info=15,16&lat=some_data&long=some_data"];
ASIHTTPRequest *_request = [ASIHTTPRequest requestWithURL:url];
ASIHTTPRequest *request = _request;
request.requestMethod = @"POST";
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request setDelegate:self];
[request setCompletionBlock:^{
NSString *responseString = [request responseString];
NSLog(@"Response: %@", responseString);
NSDictionary *root = [NSJSONSerialization JSONObjectWithData:request.responseData options:0 error:nil];
self.data = [root objectForKey:@"listing"];
NSLog(@"Data returned: %@", data); //Everything works well. The data returned is printed correctly
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"Error: %@", error.localizedDescription);
}];
[request startAsynchronous];
NSLog(@"Data only: %@", data); //At this point, the "data" content is nil
これは私の「ListDataController.h」ファイル定義です:
@interface ListDataController : UITableViewController{
ApplicationCell *tmpCell;
NSArray *data;
UILabel *status ;
UINib *cellNib;
}
@property (nonatomic, retain) IBOutlet ApplicationCell *tmpCell;
@property (nonatomic, retain) NSArray *data;
返されたJSON:Data self:({Icon = "Baseball.png"; Name = Baseball; NumRatings = 106; Price = "$ 2.98"; Publisher = "Super Sportz、Inc."; Rating = "3.5";}、{ Icon = "Checkers.png"; Name = Checkers; NumRatings = 87; Price = Free; Publisher = "Gameitoids、Inc."; Rating = 4;})
問題は、jsonの結果を割り当てても、ブロック外のインスタンス変数「data」にアクセスできないのはなぜですか?