Utilisez l'exemple de code suivant pour élaborer ma question:
struct exampleObj {
var str: String?
var arr: [String]?
}
let filterArray = ["something1", "ins1", "something2"]
let obj1 = exampleObj(str: "obj1", arr: ["ins2", "ins3"])
let obj2 = exampleObj(str: "obj2", arr: ["ins1", "ins2"])
let obj3 = exampleObj(str: "obj3", arr: ["ins1", "ins4"])
let obj4 = exampleObj(str: "obj4", arr: ["ins3", "ins4"])
var arrayObj = [obj1, obj2, obj3, obj4]
let result = arrayObj.filter { filterArray.contains($0.arr...)} //??? I get lost here, dunno if right approach.
3 Réponses :
Essayez ceci: ou en utilisant définir code>: p>
Vous devez trouver des correspondances où il y a une intersection entre les valeurs des deux tableaux. Cela se fait plus facilement avec des ensembles. Vous devez également faire face à Ceci serait plus efficace si vous déclarez Art code> en option. filterarray code> en tant que jeu Code> Pour commencer. P> let filterSet: Set = ["something1", "ins1", "something2"]
let obj1 = exampleObj(str: "obj1", arr: ["ins2", "ins3"])
let obj2 = exampleObj(str: "obj2", arr: ["ins1", "ins2"])
let obj3 = exampleObj(str: "obj3", arr: ["ins1", "ins4"])
let obj4 = exampleObj(str: "obj4", arr: ["ins3", "ins4"])
var arrayObj = [obj1, obj2, obj3, obj4]
let result = arrayObj.filter { !filterSet.intersection($0.arr ?? []).isEmpty }
Vous pouvez simplement faire en trouvant non-vide code> intersection code> entre filterarray code> et exemple de l'aiguillon d'Art code>, c'est-à-dire let filterSet = Set(filterArray)
let result = arrayObj.filter { (exampleObj) -> Bool in
if let arr = exampleObj.arr {
return !filterSet.intersection(arr).isEmpty
}
return false
}
Quel est le but de déclarer vos propriétés facultatives si elles ne seront jamais nulles?
Struct Exemplej {STR STR: String Soit Arr: [String]}} Code> BTW Il s'agit de la convention de nommage rapide pour nommer vos structures commençant par un chantier supérieur