Ошибка NSDictionary.Как это решить? - PullRequest
0 голосов
/ 07 января 2011

Я использую библиотеку touchjson. Я получаю структуру JSON.

  1. {"My dishes": ""} если у меня нет посуды или
  2. {"My dishes": [{"dish": "rice with fish""restaurant_id": "35", "latitude": "39.783871","longitude": "-96.314759"}]} если у меня есть блюдо.

-

NSDictionary *all_dish = [dictionary objectForKey:@"My dishes"];
for (NSDictionary *my_dish in all_dish) {
  //some code
}

в первом случае я получаю

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x2900688'

Как решить проблему?

Ответы [ 2 ]

4 голосов
/ 07 января 2011

В первом случае объект для ключа My dishes является не словарем, а NSString, который не поддерживает быстрое перечисление.

Во втором случае all_dishes - это не NSDictionary, а NSArray. Я удивлен, что это работает.

То, как не обрабатываются блюда, нарушено с того места, где я стою: если у вас нет посуды, My dishes должно иметь значение null или пустой список, а не "".

Если вы не можете это контролировать, проверьте, является ли значение My dishes значением NSArray, прежде чем пытаться перечислить его.

3 голосов
/ 07 января 2011
if ([allDish isKindOfClass: [NSDictionary class]]) {
    for (NSDictionary *my_dish in all_dish) {
        if ([myDish isKindOfClass: [NSDictionary class]]) {
            //...
        }
    }
}
...