我有一系列NSDictionary,我想检查特定的NSDictionary" key"是否存在于NSArray中。
我试过
if let val = dict["key"] {
if let x = val {
println(x)
} else {
println("value is nil")
}
} else {
println("key is not present in dict")
}
和
let arrayOfKeys = dictionary.allKeys
if (arrayOfKeys.containsObject(yourKey)) {
}
else {
}
但这是针对单个数组对象的。还
if ([[dictionary allKeys] containsObject:key]) {
// contains key
}
此单独NSDictionary的方法不适用于NSArray。
另外
if readArray.contains(["A":1]) { ALToastView.toastInView(UIApplication.sharedApplication().keyWindow, withText: "Already added")
}else{
readArray.append(["A":0]
}
如果键#34; A"的更改值,此代码将在数组中再次添加相同的键。
实施例。我的数组包含字典[" A":1],我想检查键#34; A"是否存在? 如何检查Array中的任何键?我需要迭代数组吗?提前谢谢。
答案 0 :(得分:1)
参考以下示例:
var array = [[String:Any]]()
array.append(["key1":"value1"])
array.append(["key2":"value2"])
array.append(["key3":"value3"])
array.append(["key4":"value4"])
array.append(["key5":"value5"])
let key = "key5"
if let index = (array.indexOf { (dict) -> Bool in
dict[key] != nil
})
{
print("Key Found at = \(index) ")
} else {
print("Key not Found")
}
答案 1 :(得分:0)
您可以使用此方法。基本上你通过dict数组迭代得到它的索引和dict的元组,如果dict包含键,你将索引存储在数组中。
let arrayOfDict = [
["key1":"value1", "key2":"value2"],
["key3":"value3", "key4":"value4", "key5":"value5"],
["key6":"value6", "key7":"value7", "key8":"value8"],
["key6":"value6", "key7":"value7", "key8":"value8"]
];
let keyToCheck = "key6"
var foundIndex = [Int]()
for (index, dict) in arrayOfDict.enumerate()
{
if let item = dict[keyToCheck] {
foundIndex.append(index)
}
}
if foundIndex.count > 0 {
print("Found at \(foundIndex)")
} else {
print ("not found")
}
答案 2 :(得分:0)
如果您想获取包含键和字典索引的词典,也可以使用此方法。
let newArray = arrayOfDict.enumerate().filter { (tuple:(index: Int, element: Dictionary<String, String>)) -> Bool in
if tuple.element.keys.contains(keyToCheck) {
return true
} else {
return false
}
}
newArray将是一个类型为元组的数组(Int:[String:String]),其中tuple.0将是索引,而tuple.1将是字典