2012-02-14 78 views
1

我试着检索经度和纬度坐标,即时通讯制造,但收到以下错误的应用程序:JSON和NSMutableArray的错误

2012-02-14 14:00:33.439 MapApp[13750:11c03] { 
    "EVENT_NAME" = "TRIAL EVENT"; 
    lat = "38.671837"; 
    lng = "-77.349533"; 
} 
2012-02-14 14:00:40.759 MapApp[13750:11c03] -[__NSCFArray objectForKey:]: unrecognized  selector sent to instance 0x7955ea0 
2012-02-14 14:00:40.759 MapApp[13750:11c03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x7955ea0' 
    *** First throw call stack: 
    (0x1728052 0x18b9d0a 0x1729ced 0x168ef00 0x168ece2 0x2680 0x56764e 0x582b89 0x5829bd 0x580f8a 0x580e2f 0x57effb 0x57f85a 0x568fbf 0x56921b 0x56a0f1 0x4d8fec 0x4de572 0x4d872b 0x2196 0x49f9d6 0x4a08a6 0x4af743 0x4b01f8 0x4a3aa9 0x1e38fa9 0x16fc1c5 0x1661022 0x165f90a 0x165edb4 0x165eccb 0x4a02a7 0x4a1a9b 0x20b8 0x2015 0x1) 
    terminate called throwing an exception(gdb) 

这是我的代码:

进出口新的JSON和解析:我也试过以下组合

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSString *urlString = [NSString stringWithFormat:jGETUrl]; 

NSURL *url = [NSURL URLWithString:urlString]; 

NSData *data = [NSData dataWithContentsOfURL:url]; 

NSError *error; 

NSMutableArray *datas = (NSMutableArray*)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

NSLog(@"%@", [datas objectAtIndex:0]); 


NSNumber *latitude = [datas objectAtIndex:1]; 
NSLog(@"%@", [datas objectAtIndex:1]); 
NSNumber *longitude =[datas objectAtIndex:2]; 
NSLog(@"%@", [datas objectAtIndex:2]); 
NSString *eventName =[datas objectAtIndex:3]; 
NSLog(@"%@", [datas objectAtIndex:3]); 

CLLocationCoordinate2D coordinate; 
coordinate.latitude= latitude.doubleValue; 
coordinate.longitude= longitude.doubleValue; 
MyLocation *annotation =[[MyLocation alloc] initWithName:eventName address:eventName  coordinate:coordinate]; 
         [_mapView addAnnotation:annotation]; 
} 

然后它返回EVENT NAME,lat,l ng为每个索引。请帮助..

回答

4

这是你的代码:

NSLog(@"%@",    [datas objectAtIndex:  0]); 
NSNumber *latitude =  [datas objectForKey:   @"lat"]; 
          ^^^^^^^^^^^^^^^^^^^^^ 

你必须决定是否datas是一个数组(您可以使用objectAtIndex:)或词典(你可以使用objectForKey:)。您不能同时使用这两个对象,因为对象不能同时为NSArrayNSDictionary

并从异常消息(-[__NSCFArray objectForKey:]: unrecognized selector)中可以看到datas对象实际上是一个数组,您无法在其上使用objectForKey:

你应该尝试类似的东西:

NSDictionary *dict = [datas objectAtIndex:0]; 
NSNumber *latitude = [dict objectForKey:@"lat"]; 
+0

很好的解释。谢谢。我结束了自己的想法,并忘记检查答案,但无论如何感谢! – wilforeal 2013-03-07 01:58:30