sendAsyncrhonousRequest を呼び出したときに渡される NSArray の参照を取得しようとしています。その NSArray を取得したら、それをクラス属性に割り当てたいのですが、それができないようです。
@implementation BarTableViewController {
NSArray *_jsonArray;
}
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode == 200 && data.length > 0 && error == nil)
{
NSError *e = nil;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e);
} else {
_jsonArray = jsonArray; // this doesn't work? _jsonArray is at the class level
}
}
else if (error)
{
NSLog(@"HTTP Status: %ld", (long)statusCode);
}
else if (statusCode != 200)
{
NSLog(@"HTTP Status: %ld", (long)statusCode);
}
}];
jsonArray をトラバースすると、データが正しく表示されます。後で使用するために _jsonArray に割り当てると、データが返されなくなります。配列のカウントはゼロです。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _jsonArray.count; // always returns zero
}
jsonArray をクラス属性に割り当てて、そのデータを後で使用できるようにするにはどうすればよいですか?