1

Json ファイルをテーブル ビューに解析しようとしていますが、このエラーが発生しています

[__NSCFDictionary objectAtIndex:]: 認識されないセレクターがインスタンスに送信され、アプリがクラッシュしています。私を助けてください、私はiOS開発が初めてです。

マイコード

@implementation ViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    // Custom initialization
}
    return self;
}

- (void)viewDidLoad
{
    self.title = @"Feeds";
    [super viewDidLoad];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    NSURL *url = [NSURL URLWithString:@"http://little-people.blogspot.com/feeds/posts        /default?alt=json"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    data = [[NSMutableData alloc] init];
    NSLog(@"Data Data , %@", data);
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
{
    [data appendData:theData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

    feed = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
    NSLog(@"Data  , %@", feed);
    [mainTableView reloadData];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"The download   could not complete - please make sure you're connected to either 3G or Wi-Fi." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
    [errorView show];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

- (int)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}    


- (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [feed count];
    NSLog(@"Data Data , %@", feed);
 }
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath    *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

    if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
}
if (([feed count] - 1) >=indexPath.row) {

    cell.textLabel.text = [[feed objectAtIndex:indexPath.row] objectForKey:@"feed"];
    cell.detailTextLabel.text = [[feed objectAtIndex:indexPath.row] objectForKey:@"title"];
}



    return cell;
}
4

2 に答える 2

8

問題は、それがではfeedなく であるということです。NSArrayNSDictionary

JSON を見ると、おそらく次の配列にアクセスする必要があります。[feed objectForKey:@"entry"]

于 2013-03-21T15:51:06.083 に答える
3

フィードの最上位オブジェクトは JSON オブジェクトであり、JSON 配列ではありません。したがって、逆シリアル化により、NSArray ではなく NSDictionary が得られます。

于 2013-03-21T15:54:46.763 に答える