我有一个字典对象数组。在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进行字典?是否需要检查或我正在做的方式是错误的?
谢谢!
答案 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
)。