展开可选值时意外发现nil,但值存在

时间:2018-11-22 08:02:14

标签: swift swifty-json

我知道我需要绑定我的物品以进行包装,但是问题是我的价值没有得到确认,而是存在。

这是我的代码:

surveyW.karmaWin = Int(endedSurvey["karma"].string!)

endedSurvey是我的JSON后端的数组 字典。我收到一个Unexpectedly found nil while unwrapping an Optional value错误。 我指定我强制展开以显示您的问题。

问题是我的数组包含karma值。我向您显示值的屏幕:

因此我们可以看到该值存在。为什么我得到Unexpectedly found nil...

3 个答案:

答案 0 :(得分:3)

"karma"中包含的值不是String。您正在尝试使用SwiftyJSON强制转换它,但它告诉您它没有nil。您首先需要按原样提取值-.int,然后根据需要将其转换为其他值。

surveyW.karmaWin = endedSurvey["karma"].int

答案 1 :(得分:0)

endedSurvey [“ karma”]是一个不是字符串的Integer,并且解开可选内容的一种好方法是:

component

答案 2 :(得分:0)

您可以使用intValue,因为SwiftyJSON具有两种用于获取值的“获取器”:可选和非可选

.string和.int是值的String和Int表示形式的可选getter,因此您必须在使用前将其拆开

if let fbId = fbJson["id"].string {
print(fbId)
}
     

如果您100%确保总会有一个值,则可以通过使用非可选的getter来使用等价于“强制展开”的功能,如果不再需要,则不需要:

let fbId = fbJson["id"].stringValue

在您的代码中:

surveyW.karmaWin = endedSurvey["karma"].intValue