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})
    }
}

谢谢你!第二个分机就是我要找的。谢谢!第二个扩展是我一直在寻找的。