Swift 数组和包含,如何确定集合是否包含对象或值? [英] Swift arrays and contains, how to determine if a collection contains an object or value?

查看:45
本文介绍了Swift 数组和包含,如何确定集合是否包含对象或值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我再次使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆