json ファイルを解析してから、配列を cellForRowAtIndexPath に渡そうとしていますが、配列が null になります。.h で
@interface NewsControllor : UITableViewController
@property (nonatomic) NSArray *latestNews;
@property (nonatomic) NSArray *sortedArray;
@end
メートルで
@synthesize latestNews;
@synthesize sortedArray;
ビューが表示されます
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:
NewsFeed];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
}
取得したデータ
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
self.latestNews = [json objectForKey:@"News"]; //2
//sort the json array
NSSortDescriptor *latestnewssorter = [[NSSortDescriptor alloc] initWithKey:@"sortNumber" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:latestnewssorter,nil];
self.sortedArray =[latestNews sortedArrayUsingDescriptors:sortDescriptors];
}
cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
NSLog(@"News: %@", self.latestNews);
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:@"NewsCell"];
NSDictionary* item = [self.sortedArray objectAtIndex:0]; //[indexPath row]
cell.textLabel.text = [item objectForKey:@"titleOfNews"];
cell.detailTextLabel.text = [item objectForKey:@"detailOfNews"];
return cell;
}
私はテストしているので、1つのセルしか返していません。セクションの行数も 1 です