在Swift中检查isKindOfClass到Dictionary

时间:2015-03-14 12:53:06

标签: ios swift dictionary

我有一个字典对象数组。在for循环中,我想检查数组中的每个对象是否是KindOfClass字典。

var xxxStatus = jsonResponse as Dictionary<String, AnyObject>
var applications = xxxStatus["status"] as NSArray!

for application in applications {
   if  application.isKindOfClass(Dictionary) {
        //Im getting this error in above if statmet "Type Dictionary<Type, Value> does not confirm to protocol 'AnyObject'"          
   }
}

如何使用isKindOfClass进行字典?是否需要检查或我正在做的方式是错误的?

谢谢!

2 个答案:

答案 0 :(得分:6)

这可以通过多种方式实现。如果您知道密钥和值类型,可以使用is进行检查:

for application in applications {
    if application is Dictionary<String, AnyObject> {
      // Do something
    }
}

您还可以使用条件分配:

for application in applications {
    if let applicationDictionary = application as [String: AnyObject] {
      // Do something
    }
}

或者,如果您想确保它是NSDictionary的实例,则可以使用application.isKindOfClass(NSDictionary)

答案 1 :(得分:1)

这是因为isKindOfClass需要AnyClass类型 - 即类型。字典不是类,它们是结构,因此不能由AnyObject持有。

如果你将代码切换到application.isKindOfClass(NSDictionary)它应该可以工作(从某种意义上说它将编译,并检查类型是否为NSDictionary)。