我再次使用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))
那么我该如何显式包装东西?我真的不明白为什么我只需要显式地包装它,以便将其正确包装,但这就是它的外观。
斯威夫特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")