NSMutableDictionary:转换为无关的Swift类型?

fuz*_*oat 3 dictionary casting nsmutabledictionary swift

任何人都可以帮助我解决这个问题的正确方法,我尝试了各种版本,但总是遇到错误或警告.下面的代码和输出来自Swift Playground.

var foundationDict = NSMutableDictionary()
foundationDict.setObject("Bilbo", forKey: "FirstName")
foundationDict.setObject("Baggins", forKey: "LastName")

var swiftDict = foundationDict as! Dictionary<String, String>
for (key, value) in swiftDict {
    print("KEY: \(key) VALUE: |\(value)")
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

KEY: FirstName VALUE: |Bilbo
KEY: LastName VALUE: |Baggins
Run Code Online (Sandbox Code Playgroud)

警告:

Cast from NSMutableDictionary to unrelated type Dictionary<String String> always fails
Run Code Online (Sandbox Code Playgroud)

kar*_*wag 5

我不确定为什么,但是这样用它来表达沉默警告:

var swiftDict = (foundationDict as NSDictionary) as! Dictionary<String, String>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,类型系统似乎很难与NSMutableDictionary/NSDictionary相媲美.