2013-02-12 3 views
1

Я разбираю данные JSON с JSONKit как NSMutableDictionary.JSONKit недопустимый аргумент при попытке скопировать

NSString *str = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding]; 

NSMutableDictionary *jsonResponse = [self.responseData objectFromJSONData]; 

NSMutableDictionary *newData = [[NSMutableDictionary alloc] init]; 
[newData addEntriesFromDictionary:[jsonResponse mutableCopy]]; 

Когда я делаю это я получаю эту ошибку:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableDictionary addEntriesFromDictionary:]: dictionary argument is not an NSDictionary' 

Я пытаюсь выяснить, что является причиной этой проблемы. Я знаю, что jsonResponse является объектом JKArray из моего другого опыта.

Мне нужна помощь. Спасибо.

ответ

0

Попробуйте следующее:

id object = [self.responseData objectFromJSONData]; 
NSLog(@"%@", [object class]); 

Скорее всего, ваш ответ является массивом вместо словаря.


Если вы действительно хотите, чтобы преобразовать массив в словарь, вы могли бы сделать что-то вроде этого, используя самоопределенную ключ:

NSArray *array = [self.responseData objectFromJSONData]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObject:array forKey:@"posts"]; 

Хотя, возможно, есть некоторые лучшие варианты, если вы могли бы покажите мне содержимое вашего массива.

+0

Ответ JKArray, как я уже говорил. –

+0

Ну, вот в чем проблема, вы не можете преобразовать массив непосредственно в словарь. Чего вы хотите достичь, поместив данные в словарь? –

+0

Дело в том, что каждый написанный мной код использует словарные методы, такие как [[[self.eventList valueForKeyPath: @ "picture"] valueForKeyPath: @ "url"] objectAtIndex: indexPath.row]; Они работают успешно, но когда я пытаюсь скопировать его, он начинает работать как массив и не работает. Я не знаю, как это достичь. Я просто хочу получить последние сообщения с сервера и добавить их к моим данным. –

Смежные вопросы