特定の項目(プロパティの値)がオブジェクトの配列に存在するかどうかを確認しようとしていますが、解決策を見つけることができませんでした。ここで何が欠けているのか教えてください。
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")
}
次のように配列をフィルタリングできます。
let results = objarray.filter { $0.id == 1 }
クロージャで指定された条件に一致する要素の配列を返します。上記の場合、id
プロパティが1に等しいすべての要素を含む配列を返します。
ブール値の結果が必要なので、次のようなチェックを行ってください。
let exists = results.isEmpty == false
フィルターされた配列に少なくとも1つの要素がある場合、exists
はtrueになります
In Swift:
if objarray.contains(where: { name in name.id == 1 }) {
print("1 exists in the array")
} else {
print("1 does not exists in the array")
}
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")
}
,
(where
)表記を使用した@Antonioのソリューションの小さな反復:
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")
}
これは私と一緒にうまくいきます:
if(contains(objarray){ x in x.id == 1})
{
println("1 exists in the array")
}
署名:
let booleanValue = 'propertie' in yourArray;
例:
let yourArray= ['1', '2', '3'];
let contains = '2' in yourArray; => true
let contains = '4' in yourArray; => false
私はこの解決策で同様の問題に取り組みました。 containsを使用すると、ブール値が返されます。
var myVar = "James"
if myArray.contains(myVar) {
print("present")
}
else {
print("no present")
}