在Swift中循环翻译时播放

时间:2015-07-06 16:38:38

标签: swift

我有一个AnyObject字典,我想循环获取密钥和值,但同时将它们转换为String

var headers: [NSObject : AnyObject] = [:]
headers["Content-Type"] = "application/pdf"

for (key, value) in headers {
    println(key)
    println(value)
}

我认为它会像下面这样但是这给了我Type '(String, String)' does not conform to protocol 'SequenceType'

for (key, value) in headers as (String, String) {
    println(key)
    println(value)
}

我知道我可以像(key as! String)一样内联,但我认为你可以把它作为你的循环。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

您要求编译器迭代headers作为字符串元组,但headers是字典,而不是元组。

解决方案是使用正确的类型一次转换整个headers字典,键为String,值为String,如下所示:

for (key, value) in headers as! [String:String] {
    println(key)
    println(value)
}

当然,请注意,如果任何键或值不是String,它将崩溃。

如果您不确定所有的键和值都是字符串,则必须使用原始类型迭代字典,然后使用安全检查在循环内转换为字符串