我目前正在使用此扩展程序:
extension Array
{
func containsObject(_ object:Any) -> Bool
{
if let anObject:AnyObject = object as? AnyObject
{
for obj in self
{
if let anObj:AnyObject = obj as? AnyObject
{
if anObj === anObject
{
return true
}
}
}
}
return false
}
}
我知道这是次优的。它还会产生一些不必要的编译时警告:
从'Any'到'AnyObject'的条件转换总是成功。
从'Element'到'AnyObject'的条件转换总是成功。
有人可以建议更好的扩展来检查任何类型对象的包含吗?
答案 0 :(得分:3)
这意味着不需要使用条件转换。移除if let并将as?
更改为as
extension Array {
func containsObject(_ object: Any) -> Bool {
for obj in self {
if obj as AnyObject === object as AnyObject {
return true
}
}
return false
}
}
或者简单地说:
extension Array {
func containsObject(_ object: Any) -> Bool {
return contains(where: {$0 as AnyObject === object as AnyObject})
}
}