unrecognized uncaught terminating sent react nsinvalidargumentexception due app objective-c xcode json parsing uitableview

objective-c - uncaught - unrecognized selector sent to instance swift 3



[__NSCFDictionary objectAtIndex:]: selector no reconocido enviado a la instancia (2)

Estoy tratando de analizar un archivo Json en la vista Tabla y estoy obteniendo este error

[__NSCFDictionary objectAtIndex:]: selector no reconocido enviado a la instancia y la aplicación se bloquea. Por favor, ayúdenme, soy nuevo en el desarrollo de iOS.

Mi código

@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; }


El objeto de nivel superior en su feed es un objeto JSON, no una matriz JSON. Entonces la deserialización te da un NSDictionary, no un NSArray.


El problema es que el feed no es un NSArray , sino un NSDictionary .

Al mirar el JSON, es probable que desee acceder a este conjunto: [feed objectForKey:@"entry"]