Swift中的列表键行为与Objective-C不同。
目标C:
NSDictionary *myDict = @{@"key1": @"One",@"key2": @"Two",@"key3": @"Three"};
for (NSString *myKey in myDict) {
NSLog(@"key: %@",myKey);
}
Objective-C调试输出:
key: key1
key: key3
key: key2
然而,Swift的表现不同:
let stringOfStrings = ["key1":"value1", "key2":"value2"]
for key in stringOfStrings {
println(key)
}
斯威夫特的输出:
(key2, value2)
(key1, value1)
如何使Swift像Objective-C一样执行;即,仅列出键?
答案 0 :(得分:5)
它看起来在Swift中表现不同的原因是,当你遍历字典时,你得到的是Tuple。这个特定的元组有一个“键”和一个“值”。如果你只想访问密钥,你应该只捕获元组的那一部分:
for (key, _) in stringOfStrings {
println(key)
}
下划线(_
)是一个占位符,您通常会捕获一个表明您实际上不想使用该变量的变量。如果您确实也使用了该值,则可以像这样循环:
for (key, value) in stringOfStrings {
println("\(key): \(value)")
}
答案 1 :(得分:2)
使用keys
属性:
let stringOfStrings = ["key1":"value1", "key2":"value2"]
for key in stringOfStrings.keys {
println(key)
}
// key2
// key1
答案 2 :(得分:2)
试试这个:
for (key, value) in stringOfStrings
或者只是获取密钥:
for (key, _) in stringOfStrings
答案 3 :(得分:0)
Swift 2.0
您可以按照以下方式访问NSDictionary
值:
let stringOfStrings = ["key1":"value1", "key2":"value2"]
for key in stringOfStrings {
print(key.0)
print(key.1)
}
或者只是获取密钥
for key in stringOfStrings {
print(key.0)
}