Swift的字典键列表与Objective-C不同

Fre*_*Lee 0 nsdictionary swift

Swift中的列表字典键行为与Objective-C不同.
Objective-C的:

NSDictionary *myDict = @{@"key1": @"One",@"key2": @"Two",@"key3": @"Three"};

for (NSString *myKey in myDict) {
    NSLog(@"key: %@",myKey);
}
Run Code Online (Sandbox Code Playgroud)

Objective-C调试输出:

key: key1 
key: key3
key: key2 
Run Code Online (Sandbox Code Playgroud)

但Swift表现不同:

let stringOfStrings = ["key1":"value1", "key2":"value2"]

for key in stringOfStrings {
    println(key)
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特的输出:

(key2, value2)
(key1, value1)
Run Code Online (Sandbox Code Playgroud)

如何使Swift像Objective-C一样执行; 即,仅列出键?

dre*_*wag 5

它看起来在Swift中表现不同的原因是,当你遍历字典时,你会得到一个元组.这个特定的元组有一个"键"和一个"值".如果你只想访问密钥,你应该只捕获元组的那一部分:

for (key, _) in stringOfStrings {
    println(key)
}
Run Code Online (Sandbox Code Playgroud)

下划线(_)是占位符,您通常会捕获一个表明您实际上不想使用该变量的变量.如果您确实使用了该值,则可以像这样循环:

for (key, value) in stringOfStrings {
    println("\(key): \(value)")
}
Run Code Online (Sandbox Code Playgroud)