Swift数组 - 使用"包含" AnyObject类型

时间:2014-12-31 12:33:42

标签: ios swift

我想在类型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'

enter image description here

3 个答案:

答案 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
    }
}

注意:您说您的阵列一次只包含一种类型 - 这很重要。