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

Unexpectedly found nil while unwrapping an Optional value but value exist

我知道我需要绑定我的变量以进行解包,但问题是我的值没有被重新识别但存在。

这是我的代码:

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

endedSurvey 是我的 JSON 后端的 array dictionary。我收到 Unexpectedly found nil while unwrapping an Optional value 错误。 我指定强制展开以向您展示我的问题。

问题是我的数组包含 karma 值。我给你看值的屏幕:

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

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

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

endedSurvey["karma"] 是一个整数而不是字符串,也是解包可选的好方法是:

if let karma = endedSurvey["karma"] as? Int{
    surveyW.karmaWin = karma
}

您可以使用 intValue,因为 SwiftyJSON 有两种 "getters" 用于检索值:可选和非可选

.string 和 .int 是一个值的 String 和 Int 表示的可选 getter,所以你必须在使用前解包它

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

If you are 100% sure that there will always be a value, you can use the equivalent of "force unwrap" by using the non-Optional getter and you don't need if let anymore:

let fbId = fbJson["id"].stringValue

在您的代码中:

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