从任意投射到双快速

Bre*_*ung -4 dictionary casting swift

我有一个简单的问题,我有这本字典:

let dict: [String: Any] = ["Area": "100", "YessorNo" : true]
Run Code Online (Sandbox Code Playgroud)

而且,对于键area,我想将其值转换为double,如下所示:

let a = dict["Area"] as? Double
Run Code Online (Sandbox Code Playgroud)

当我打印时a,我得到一个nil,为什么?值100虽然是a string但不是数字?为什么我不能将其转换为double

Bru*_*cha 5

您不能直接将a强制String转换为Double,而需要使用适当的初始化程序。

guard let numStr = dict["Area"] as? String else {
    return
}
let a = Double(numStr)
Run Code Online (Sandbox Code Playgroud)