![](/img/trans.png)
[英]Swift - Nil when using 'as! Dictionary<String, AnyObject>'
[英]How to remove dictionary[String:AnyObject] for array using filter function in swift?
var globalCountArray = [AnyObject]()
var assetDictionary = [String:AnyObject]()
globalCountArray.append(assetDictionary as AnyObject)
如何使用Anyobject数组过滤字典? 我已经试过了。
globalCountArray = globalCountArray.filter {$0 as AnyObject != dict }
但是我有错误
二进制运算符'!='不能应用于类型为'AnyObject'和'[String:AnyObject]'的操作数
试试这个
var globalCountArray = [AnyObject]()
var assetDictionary = [String:AnyObject]()
globalCountArray.append(assetDictionary as AnyObject)
let dict = [String:AnyObject]()
globalCountArray = globalCountArray.filter({ (obj) -> Bool in
if obj is[String:AnyObject] {
return (obj as! [String:AnyObject]) != dict
}
return false
})
---------或您可以通过----------实现相同目的
globalCountArray = globalCountArray.filter({ (obj) -> Bool in
if obj is[String:AnyObject] {
return (obj as! [String:AnyObject]) == dict
}
return true
})
您需要将此方法添加到类定义之外。
public func !=(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool {
return !NSDictionary(dictionary: lhs).isEqual(to: rhs)
}
public func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool {
return NSDictionary(dictionary: lhs).isEqual(to: rhs)
}
您可以为Dictionary编写扩展名:
extension Dictionary where Key: ExpressibleByStringLiteral, Value: AnyObject {
func isEqual(_ dictionary: [String: AnyObject]) -> Bool {
return NSDictionary(dictionary: dictionary).isEqual(to: self)
}
func isNotEqual(_ dictionary: [String: AnyObject]) -> Bool {
return !NSDictionary(dictionary: dictionary).isEqual(to: self)
}
}
然后,您可以将[String: AnyObject]
字典与以下内容进行比较:
FirstDictionary.isEqual(SecondDictionary)
FirstDictionary.isNotEqual(SecondDictionary)
在您的情况下:
var globalCountArray = [AnyObject]()
var assetDictionary = [String:AnyObject]()
globalCountArray.append(assetDictionary as AnyObject)
globalCountArray = globalCountArray.filter { (($0 as! [String: AnyObject]).isNotEqual(assetDictionary)) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.