Я использую JSON, но есть исключение [NSString objectForKey:] - PullRequest
0 голосов
/ 16 декабря 2011

Я читаю информацию в своей базе данных, использую 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 голосов
/ 18 декабря 2011

Я решаю исключение, изменяя класс файлов местоположений JSON, но событие не

отображение в календаре.

календарь отображается, но не содержит событий

подсказка: когда я помещаю URL в браузер, содержимое базы данных отображается

0 голосов
/ 16 декабря 2011

"передайте компоновщику специальный флаг‘ -ObjC ". Настройка параметров сборки моего проекта для включения этого флага в" другие флаги компоновщика ""

в соответствии с:

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

EDIT: Почему это заканчивается?

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"}
]}

Первый объект - это массив, помеченный как «событие», который может сбить вас с толку.

Итак, попробуйте заменить это:

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

использование: Проблема с получением содержимого JSON с помощью JSONValue

Не уверен, что это сработает, но если это сработает, это будет иметь для меня больше смысла.

...