Я не могу понять, почему xcode продолжает выдавать эту ошибку
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-
[__NSCFString allKeys]: unrecognized selector sent to instance 0x9367330'
всякий раз, когда я использую этот код
NSDictionary *nextArray = [_classDictionary
valueForKeyPath:@"response.page_records.page_record"];
for (NSDictionary *roster2 in nextArray) {
NSArray *keys = [roster2 allKeys];
if ([keys containsObject:@"title"]){
[pageName addObject:[roster2 objectForKey:@"title"]];
}
if ([keys containsObject:@"id"]) {
[pageID addObject:[roster2 objectForKey:@"id"]];
}
}
После попытки отладки я обнаружил, что исключение выдается только тогда, когда для ключа есть только один объект. Например, когда «nextArray» это:
(
{
"class_id" = 0001;
"id" = 1234;
"title" = "First Page";
},
{
"class_id" = 0002;
"id" = 12345;
"title" = Assignments;
}
)
код выполняется без исключения, но когда код просто
{
"class_id" = 0001;
"id" = 1234;
"title" = "First Page";
}
Исключение выдается. Почему это происходит? Ключи по-прежнему содержат заголовок объекта, даже если есть только один объект. Любые другие идеи, почему это исключение выбрасывается? Это как-то связано с круглыми скобками? (полное предположение) Есть ли лучший способ отладить то, что на самом деле происходит?
РЕДАКТИРОВАТЬ: Вот _userDictionary. Каков наилучший способ иметь упорядоченный массив objectforKey: @ "title" и избежать вышеуказанной ошибки?
response = {
"status" = ok;
"page_records" = {
"page" = 1;
"page_count" = 1;
"records_per_page" = 50;
"total_record_count" = 2;
"page_record" = (
{
"class_id" = 0001;
"id" = 1234;
"title" = "Test page";
},
{
"class_id" = 0002;
"id" = 12345;
"title" = "testing page 2";
}
);
};
};
}