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

0 objective-c nsdictionary ios

我要做的是检查我的词典有多深.我的JSON有两种可能性:

stop-schedule:
   0:
      route:
   1:
      route:
Run Code Online (Sandbox Code Playgroud)

要么

stop-schedule:
   route:
Run Code Online (Sandbox Code Playgroud)

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

通常我会做一些类似的事情

[dict objectForKey:@"0"]
Run Code Online (Sandbox Code Playgroud)

检查密钥是否存在(如果没有则返回nill)但是由于某种原因我在iOS上测试时遇到错误.

[__NSCFArray objectForKey:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

小智 5

现在仔细阅读错误消息.


dict不是一个字典而是一个数组.它没有钥匙.如果你想确定它是某个类,请使用反射:

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