我使用JSON但有异常[NSString objectForKey:]

时间:2011-12-16 15:55:27

标签: json nsstring nsdictionary

我在我的数据库中读取信息我使用JSON但有异常

  

' NSInvalidArgumentException',原因:' - [NSCFString objectForKey:]:无法识别的选择器发送到实例0x603dfb0'

我认为这部分:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *str = [[[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding] autorelease];

    NSArray *array = [str JSONValue];
    if (!array)
         return;

    NSDateFormatter *fmt = [[[NSDateFormatter alloc] init] autorelease];
    [fmt setDateFormat:@"yyyy-MM-dd"];

    for (NSDictionary *dict in array) {

         NSDate *d = [fmt dateFromString:[dict objectForKey:@"eve_date"]];
         NSLog(@"%@",d);
         [eventPHP addObject:[Events eventsNamed:[dict objectForKey:@"title_event"]  description:[dict objectForKey:@"description"] date:d]];
    }
}

2 个答案:

答案 0 :(得分:0)

“向链接器传递一个特殊标志'-ObjC'。调整我的项目的构建设置,将此标志包含在'其他链接器标志'中”

根据:

http://beatworm.co.uk/blog/computers/using-categories-on-objective-c-classes-in-a-static-library/

编辑: Why it is terminating?

EDIT2: 好的,不完全确定(因为我从未做过这种类型的编码),但给出了json数据:

{"event":[
  {"eve_date":"2011-12-18","eve_time":"00:00:06","title_event":"Google event","description":"Google event for IT student"},
  {"eve_date":"2011-12-29","eve_time":"00:00:08","title_event":"microsoft event","description":"microsoft event for IT student"}
]}

第一个对象是一个标有“event”的数组,可能会让你失望。

所以,试着替换它:

for (NSDictionary *dict in array) {

     NSDate *d = [fmt dateFromString:[dict objectForKey:@"eve_date"]];
     NSLog(@"%@",d);
     [eventPHP addObject:[Events eventsNamed:[dict objectForKey:@"title_event"]  description:[dict objectForKey:@"description"] date:d]];
}

使用:

NSArray *array2 = [array objectForKey:@"event"];
for (NSDictionary *dict in array2) {

     NSDate *d = [fmt dateFromString:[dict objectForKey:@"eve_date"]];
     NSLog(@"%@",d);
     [eventPHP addObject:[Events eventsNamed:[dict objectForKey:@"title_event"]  description:[dict objectForKey:@"description"] date:d]];
}

使用:Problem getting JSON contents with JSONValue

不确定这是否有效,但如果确实如此,那对我来说会更有意义。

答案 1 :(得分:0)

我通过更改JSON的位置文件类来解决异常,但事件不是

在日历中显示。

日历显示但不包含任何事件

提示:当我把url放在浏览器中显示数据库的内容时