Ios 如何检查NSDictionary的哪些键可用?

Ios 如何检查NSDictionary的哪些键可用?,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我想做的是检查我的字典有多深。我的JSON有两种可能: stop-schedule: 0: route: 1: route: 或 所以我在检查我是否需要更深入 通常我会做一些简单的事情 [dict objectForKey:@"0"] 为了检查密钥是否存在(如果不存在,将返回nill),但是由于某种原因,我在iOS上测试它时遇到了一个错误 [__NSCFArray objectForKey:]: unrecognized selector sent to

我想做的是检查我的字典有多深。我的JSON有两种可能:

stop-schedule:
   0:
      route:
   1:
      route:

所以我在检查我是否需要更深入

通常我会做一些简单的事情

[dict objectForKey:@"0"]
为了检查密钥是否存在(如果不存在,将返回nill),但是由于某种原因,我在iOS上测试它时遇到了一个错误

[__NSCFArray objectForKey:]: unrecognized selector sent to instance

现在仔细阅读错误消息


您的
dict
实际上不是一个字典,而是一个数组。它没有钥匙。如果要确保它属于某个类,请使用反射:

if ([json isKindOfClass:[NSDictionary class]]) {
    // object
} else if ([json isKindOfClass:[NSArray class]]) {
    // array
} else {
    // fragment or `nil`
}

现在仔细阅读错误消息


您的
dict
实际上不是一个字典,而是一个数组。它没有钥匙。如果要确保它属于某个类,请使用反射:

if ([json isKindOfClass:[NSDictionary class]]) {
    // object
} else if ([json isKindOfClass:[NSArray class]]) {
    // array
} else {
    // fragment or `nil`
}

当然,我真傻。也许我应该休息一下,早上继续。。。谢谢。@DeKay是的,一定要睡一会儿。不客气。:)当然,我真傻。也许我应该休息一下,早上继续。。。谢谢。@DeKay是的,一定要睡一会儿。不客气。:)那不是一本字典。