NSDictionary错误。怎么解决?

时间:2011-01-07 11:01:44

标签: iphone nsdictionary

我使用touchjson库。我收到了json结构。

  1. {"My dishes": ""}如果我没有我的菜或
  2. {"My dishes": [{"dish": "rice with fish""restaurant_id": "35", "latitude": "39.783871","longitude": "-96.314759"}]}如果我有一道菜。
  3. -

    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 个答案:

答案 0 :(得分:4)

在第一种情况下,键My dishes的对象不是字典,而是NSString,它不支持快速枚举。

在第二种情况下,all_dishes不是NSDictionary而是NSArray。我很惊讶它有效。

没有处理菜肴的方式从我的立场被打破:如果你没有菜My dishes应该有null或空列表,而不是“”。

如果您无法控制此问题,请在尝试对其进行枚举之前检查My dishes的值是否为NSArray

答案 1 :(得分:3)

if ([allDish isKindOfClass: [NSDictionary class]]) {
    for (NSDictionary *my_dish in all_dish) {
        if ([myDish isKindOfClass: [NSDictionary class]]) {
            //...
        }
    }
}