这是我宣布我的词典的方式:
var dataDictionary: [NSIndexPath:[Int:Bool]]!
内部字典总是只有一个条目,例如 [1:真] 即可。当我搜索dataDictionary
时,我指定了一个NSIndexPath。返回内部字典。是这样的:
var innerDictionary = dataDictionary[indexPath] // is of type [Int:Bool]
我想访问内部词典的键和值,但我不想指定一个Integer或Bool,因为它是未知的。我只想将Int和/或Bool值存储在内部字典中。不需要搜索内部字典,因为if将始终只包含一个条目。也许是这样的:
var key = innerDictionary.key
var value = innerDictionary.value
如何实现这一目标?
答案 0 :(得分:1)
尝试这样:
func nestedDic(){
var innerDictionary:NSDictionary = ["Item 1": "data 0", "Item 2": "data 1"]
//NSLog("original object:\(innerDictionary)")
NSLog("all keys array:\(innerDictionary.allKeys)")
if(innerDictionary.isKindOfClass(NSDictionary)){
for key in innerDictionary.allKeys{
let value = innerDictionary.valueForKey(key as! NSString as String)
NSLog("key value = \(value as! String)")
}
}
}
答案 1 :(得分:1)
如果您的词典只有一个条目,并且您不知道密钥,使用Swift 2,您可以安全地使用keys
获取if let
序列的第一个元素:
let innerDictionary = [42: true]
if let k = innerDictionary.keys.first {
print(k) // prints 42
} else {
// dict is empty
}
值相同:
if let v = innerDictionary.values.first {
print(v) // prints true
} else {
// key has no value
}
答案 2 :(得分:1)
如果只有一个条目,您可以为内部字典创建一个简单的结构,然后您就可以使用自己喜欢的属性名称。
struct InnerDictionary {
var key = 0
var value = false
}
let indexPath = NSIndexPath(index: 1)
var dataDictionary = [indexPath: InnerDictionary(key: 1, value: true)]
if let innerDictionary = dataDictionary[indexPath] {
var key = innerDictionary.key
var value = innerDictionary.value
}