Arrays 数组containsObject()扩展名
我当前正在使用此扩展:Arrays 数组containsObject()扩展名,arrays,swift,swift3,Arrays,Swift,Swift3,我当前正在使用此扩展: extension Array { func containsObject(_ object:Any) -> Bool { if let anObject:AnyObject = object as? AnyObject { for obj in self { if let anObj:AnyObject = obj as? AnyObje
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”的条件转换始终成功
从“元素”到“任意对象”的条件转换始终成功
有人能推荐一个更好的扩展来检查任何类型对象的包含吗?这意味着不需要使用条件强制转换。移除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})
}
}
这意味着不需要使用条件强制转换。移除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})
}
}
谢谢你!第二个分机就是我要找的。谢谢!第二个扩展是我一直在寻找的。