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")
}
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
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")
}
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")
}
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")
}
// 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")
}
Cela fonctionne bien avec moi:
if(contains(objarray){ x in x.id == 1})
{
println("1 exists in the array")
}
signature:
let booleanValue = 'propertie' in yourArray;
exemple:
let yourArray= ['1', '2', '3'];
let contains = '2' in yourArray; => true
let contains = '4' in yourArray; => false
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")
}