检查数组是否包含元素

时间:2017-02-24 13:52:16

标签: swift

我想知道为什么以后不工作:

var tmp = [AnyObject] ()
for (key, value) in dictionary{

        if (tmp.contains(value)){

        } 
      tmp.append(value as AnyObject)
    }

看起来没有方法.contain的数组。它迫使我使用其他方法tmp.contains(where: <#T##(AnyObject) throws -> Bool#>)

但我不想。我只是想检查数组是否包含该特定对象!

2 个答案:

答案 0 :(得分:1)

那是因为AnyObject不是Equatable对象。如果您有AnyObject数组,则必须自己进行比较。如果你使用了一个字符串数组或一个自定义类,你可以使用序列的this contains()方法

答案 1 :(得分:1)

我建议从AnyObject切换到AnyHashable(当然,如果可能的话),因为AnyHashable Equatable 。你的代码看起来像这样:

var tmp = [AnyHashable]()
var dictionary: [Int: Any] = [1: "Hello1", 2: "Hello2", 3: "Hello3", 4: false, 5: 289 ]
for (key, value) in dictionary{
    if tmp.contains(value as! AnyHashable){
         continue
    }
    tmp.append(value as! AnyHashable)
}

希望它有所帮助!