Swift 数组和包含,如何确定集合是否包含对象或值? [英] Swift arrays and contains, how to determine if a collection contains an object or value?
问题描述
我再次使用 swift 数组和仅由 NSArray 提供的 containsObject!
I'm at it again with swift arrays and containsObject provided by NSArray only!
我将 swift 数组桥接到 NSArray 来执行包含:
I bridge the swift array to NSArray to do that contains:
extension Array {
func contains(object:AnyObject!) -> Bool {
if(self.isEmpty) {
return false
}
let array: NSArray = self.bridgeToObjectiveC();
return array.containsObject(object)
}
}
它一般工作正常,但只要我放了一个字符串!在字符串类型的数组中,它崩溃了.即使 containsObject 确实采用 AnyObject!
it works fine in general but as soon as I put a String! in an array of type String, it crashes. Even though containsObject does take a AnyObject!
var str : String! = "bla"
var c = Array<String>();
c.append(str)
println(c.contains(str))
声明一个字符串!数组也无济于事
declaring a String! array also doesn't help
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))
那么我如何明确地包装东西?我真的不明白为什么我必须显式包装它,以便它正确展开,但这就是它的样子.
SO how do I explicitly wrap stuff? I don't really see why I'd have to explicitly wrap it only so it is right unwrapped but that's what it looks like.
推荐答案
Swift 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")
这篇关于Swift 数组和包含,如何确定集合是否包含对象或值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!