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

我再次使用swift阵列和仅由NSArray提供的containsObject

我将swift阵列桥接到NSArray以执行以下操作:

扩展数组{
func包含(对象:AnyObject!)->Bool{
如果(自己是空的){
返回错误
}
let数组:NSArray=self.bridgeToObjective();
返回数组.containsObject(对象)
}
}

一般来说,它工作得很好,但只要我放一根绳子!在字符串类型的数组中,它会崩溃。即使ContainesObject确实接受AnyObject

var str:String!=“布拉”
var c=数组<字符串>();
c、 附加(str)
println(c.contains(str))

声明一个字符串!数组也没有帮助

var str:String!=“布拉”
var c=数组<绳子&燃气轮机;();
c、 附加(str)
println(c.contains(str))

但是没有也一样工作正常

var str:String=“bla”
var c=数组<字符串>();
c、 附加(str)
println(c.contains(str))

那么我如何明确地包装东西呢?我真的不明白为什么我必须显式地包装它,只有这样它才是正确的展开,但这就是它看起来的样子

Swift 1:

让数组=[“1”、“2”、“3”]
let contained=contains(数组,“2”)
println(包含?“是”:“否”)

Swift 2、3、4:

让数组=[“1”、“2”、“3”]
let contained=array.contains(“2”)
打印(包含?“是”:“否”)

发表评论