Подтвердить что ты не робот

Быстрые массивы и содержит, как определить, содержит ли коллекция объект или ценность?

Im с ним снова с быстрыми массивами и содержит объект, предоставленный только NSArray!

Я соединяю быстрый массив с 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))

ТАК как я явно обернуть материал? Я действительно не понимаю, почему мне пришлось бы явно обернуть его только так, чтобы он был полностью развернут, но вот как он выглядит...

4b9b3361

Ответ 1

Swift 1:

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

Swift 2 и Swift 3:

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

Ответ 2

Свифта

Если вы не используете объект, вы можете использовать этот код для пользователя.

let elements = [ 10, 20, 30, 40, 50]

if elements.contains(50) {

   print("true")

}

Если вы используете NSObject Class в swift. Эти переменные соответствуют моим требованиям. вы можете изменить свои требования.

var cliectScreenList = [ATModelLeadInfo]()
var cliectScreenSelectedObject: ATModelLeadInfo!

Это для одного и того же типа данных.

{ $0.user_id == cliectScreenSelectedObject.user_id }

Если вы хотите тип AnyObject.

{ "\($0.user_id)" == "\(cliectScreenSelectedObject.user_id)" }

Полное условие

if cliectScreenSelected.contains( { $0.user_id == cliectScreenSelectedObject.user_id } ) == false {

cliectScreenSelected.append(cliectScreenSelectedObject)

print("Object Added")

} else {

print("Object already exists")

}