一尘不染

Swift数组和包含,如何确定集合是否包含对象或值?

swift

我再次使用swift数组和NSArray仅提供的containsObject!

我将swift数组桥接到NSArray来执行以下操作:

extension Array {
    func contains(object:AnyObject!) -> Bool {
        if(self.isEmpty) {
            return false
        }
        let array: NSArray = self.bridgeToObjectiveC();
        return array.containsObject(object)
    }
}

它通常可以正常工作,但是只要我放一个String就可以了!在字符串类型的数组中,它崩溃。即使containsObject确实占用了AnyObject!

        var str : String! = "bla"
        var c = Array<String>();
        c.append(str)
        println(c.contains(str))

声明一个字符串!数组也无济于事

        var str : String! = "bla"
        var c = Array<String!>();
        c.append(str)
        println(c.contains(str))

但是一样没有!效果很好

        var str : String = "bla"
        var c = Array<String>();
        c.append(str)
        println(c.contains(str))

那么我该如何显式包装东西?我真的不明白为什么我只需要显式地包装它,以便将其正确包装,但这就是它的外观。


阅读 1003

收藏
2020-07-07

共1个答案

一尘不染

斯威夫特1:

let array = ["1", "2", "3"]
let contained = contains(array, "2")
println(contained ? "yes" : "no")

斯威夫特2、3、4:

let array = ["1", "2", "3"]
let contained = array.contains("2")
print(contained ? "yes" : "no")
2020-07-07