我想知道为什么以后不工作:
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#>)
但我不想。我只是想检查数组是否包含该特定对象!
答案 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)
}
希望它有所帮助!