无法转换类型' __ NSCFNumber' (0x1105dc3c0)到' NSString'斯威夫特3

时间:2017-05-17 08:41:24

标签: json swift casting nsdictionary

这是我的网址回复

{
"base": "EUR",
"date": "2017-05-16",
"rates": {
    "AUD": 1.492,
}}

这是我的代码

Alamofire.request("http://api.fixer.io/latest").responseJSON { response in
        guard let JSON = response.result.value else{
            print("Error")
            return
        }
            print("JSON: \(JSON)")
        let dict = JSON as! NSDictionary
        let base : String = dict["base"] as! String
        print("Base:", base)
        let date : String = dict["date"] as! String
        print("Date:", date)
        let rateDict = dict["rates"] as! NSDictionary
        let aud : String = rateDict["AUD"] as! String
        print("AUD:", aud)
    }

在线让aud:String = rateDict [" AUD"]为!字符串标题中提到的消息有错误。这里发生了什么。请有人帮助我。

2 个答案:

答案 0 :(得分:2)

您可以将其转换为字符串,

let aud : String = String(rateDict["AUD"])

OR

let aud : String = NSString(format: "%0.2f", rateDict["AUD"]) as String

答案 1 :(得分:0)

它是浮点而不是字符串。 cast是浮动的

let aud = rateDict["AUD"] as! Float

编辑:避免强制转换,因为如果不期望数据,可能会导致应用程序崩溃。 使用下面的代码可以防止崩溃

if let rateDict = dict["rates"] as? [String : Any] {
    if let aud = rateDict["AUD"] as? Float {
        print("\(aud)")
    }
}