web-dev-qa-db-fra.com

comment vérifier si une valeur de propriété existe dans un tableau d'objets dans swift

J'essaie de vérifier si un élément spécifique (valeur d'une propriété) existe dans un tableau d'objets, mais je ne trouve aucune solution S'il vous plaît faites le moi savoir, ce qui me manque ici.

        class Name {
            var id : Int
            var name : String
            init(id:Int, name:String){
                self.id = id
                self.name = name
            }
        }

        var objarray = [Name]()
        objarray.append(Name(id: 1, name: "Nuibb"))
        objarray.append(Name(id: 2, name: "Smith"))
        objarray.append(Name(id: 3, name: "Pollock"))
        objarray.append(Name(id: 4, name: "James"))
        objarray.append(Name(id: 5, name: "Farni"))
        objarray.append(Name(id: 6, name: "Kuni"))

        if contains(objarray["id"], 1) {
            println("1 exists in the array")
        }else{
            println("1 does not exists in the array")
        }
32
Nuibb

Vous pouvez filtrer le tableau comme ceci:

let results = objarray.filter { $0.id == 1 }

qui renverra un tableau d'éléments correspondant à la condition spécifiée dans la fermeture - dans le cas ci-dessus, il renverra un tableau contenant tous les éléments ayant la propriété id égale à 1.

Puisque vous avez besoin d'un résultat booléen, il suffit de faire un test comme:

let exists = results.isEmpty == false

exists sera vrai si le tableau filtré a au moins un élément

51
Antonio

Dans Swift 3 :

if objarray.contains(where: { name in name.id == 1 }) {
    print("1 exists in the array")
} else {
    print("1 does not exists in the array")
}
10
TheEye

Dans Swift 2.x :

if objarray.contains({ name in name.id == 1 }) {
    print("1 exists in the array")
} else {
    print("1 does not exists in the array")
}
9
j_gonfer

Une petite itération sur la solution de @ Antonio en utilisant la notation , (where):

if let results = objarray.filter({ $0.id == 1 }), results.count > 0 {
   print("1 exists in the array")
} else {
   print("1 does not exists in the array")
}
3
Stoff81

// Swift 4.2

    if objarray.contains(where: { $0.id == 1 }) {
        // print("1 exists in the array")
    } else {
        // print("1 does not exists in the array")
    }
1
Danielvgftv

Cela fonctionne bien avec moi:

if(contains(objarray){ x in x.id == 1})
{
     println("1 exists in the array")
}
1
whitney13625

signature:

let booleanValue = 'propertie' in yourArray;

exemple:

let yourArray= ['1', '2', '3'];

let contains = '2' in yourArray; => true
let contains = '4' in yourArray; => false
0
ricardoaleixoo

Je suis allé avec cette solution à un problème similaire. Utiliser contient renvoie une valeur booléenne.

var myVar = "James"

if myArray.contains(myVar) {
            print("present")
        }
        else {
            print("no present")
        }
0
Dan Korkelia