我想在类型contains
AnyObject
import UIKit
var resultArray: Array<AnyObject> = Array()
resultArray.append(50)
resultArray.append(false)
resultArray.append("Test string")
let found = contains(resultArray, 50)
我收到错误:
Type 'AnyObject -> L' does not conform to protocol 'IntegerLiteralConvertible'
答案 0 :(得分:9)
我同意评论和其他答案; AnyObject
不是很好的做法,但如果真的想要使用AnyObject
,您可以将AnyObjects数组视为NSArray
对象,然后使用该函数containsObject()
:
if (resultArray as NSArray).containsObject(AnyObjectOfAnyType) {
// Do something
}
答案 1 :(得分:4)
你应该在这个例子中使用Any
,因为你持有非类类型 - 否则你将隐式转换为NSThing
。
但这是一种非ObjC互操作方式:
let found = contains(resultArray) { ($0 as? Int) == 50 }
答案 2 :(得分:0)
您可以使用is
关键字来区分不同的类型,然后使用上面的Airspeed Velocity代码进行搜索...这是一个可以修改和添加额外类型的示例如果需要的话:
if resultArray[0] is String {
found = contains(resultArray) {
($0 as? String) == "hello"
}
} else if resultArray[0] is Int {
found = contains(resultArray) {
($0 as? Int) == 50
}
}
注意:您说您的阵列一次只包含一种类型 - 这很重要。