在iPhone 6之前的设备上进行Swift Casting

时间:2014-12-05 19:09:53

标签: ios objective-c iphone swift

出于某种原因,这行代码在iPhone 6之前的设备上崩溃了:

var friendMatch = newDict.objectForKey("is_match") as Int

字典是从我从端点收到的JSON生成的。 JSON看起来像这样:

"is_match" = 1;

我也尝试过:

var friendMatch: NSNumber = newDict.objectForKey("is_match") as NSNumber

该应用程序仍然在该行崩溃。崩溃日志无益。

enter image description here

有关为什么在iPhone 6和6+上运行,但在旧设备上没有的任何想法?

2 个答案:

答案 0 :(得分:1)

var friendMatch = newDict.objectForKey("is_match") as Int

你不应该无条件地施放。有条件地施放:

if let friendMatch = newDict.objectForKey("is_match") as? Int {
    // ...
}

现在如果演员阵容失败,你就不会崩溃。

答案 1 :(得分:0)

你可以添加更多代码吗?可能是您没有正确地将NSData JSON解码为字典。

此外,使用文字语法,它更清晰,更容易阅读。

newDict["is_match"]

如果您正在阅读JSON,那么在将其转换为任何内容之前,请尝试添加println以查看其中的值或断点。

println(newDict["is_match"])

发表讨论编辑:

尝试:

var newInt = newDict["is_match"].toInt()