展开可选值但值存在时意外发现 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
我知道我需要绑定我的变量以进行解包,但问题是我的值没有被重新识别但存在。
这是我的代码:
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