0

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 です

4

1 に答える 1

0

最初に説明をログに記録して、データを探します。

NSLog(@"NSData description: %@", [data description]);

有効な 16 進データがログに記録されている場合は、指定された URL からデータを受信して​​います。
そうでなければ、あなたの に何か問題がありますNSURLConection

于 2012-05-08T05:52:54.863 に答える