我目前正在使用这个扩展:
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
}
}
我知道这是次优的。它还会生成一些不必要的编译时警告:
Conditional cast from 'Any' to 'AnyObject' always succeeds.
Conditional cast from 'Element' to 'AnyObject' always succeeds.
有人可以建议一个更好的扩展来检查任何类型对象的包含吗?
最佳答案
这意味着不需要使用条件转换。删除 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})
}
}
关于arrays - 数组 containsObject() 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46518858/