Неожиданно найдено ноль при развертывании необязательного значения, но значение существует - PullRequest
0 голосов
/ 22 ноября 2018

Я знаю, что мне нужно связать мое varaible для распаковки, но проблема в том, что моя ценность не пересмотрена, а присутствует.

Это мой код:

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

endedSurvey - это массив словарь моего JSON бэкэнда.Я получаю Unexpectedly found nil while unwrapping an Optional value ошибку.Я уточняю, что заставляю распаковку показать вам мою проблему.

Проблема в том, что мой массив содержит значение karma.Я покажу вам экран значения:

image

Итак, мы можем видеть, что значение существует.Почему я получаю Unexpectedly found nil...?

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

terminSurvey ["karma"] - это целое число, а не строка, а также хороший способ развернуть необязательный параметр:

if let karma = endedSurvey["karma"] as? Int{
    surveyW.karmaWin = karma
}
0 голосов
/ 22 ноября 2018

Вы можете использовать intValue, потому что SwiftyJSON имеет два вида «получателей» для извлечения значений: необязательные и необязательные

.string и .int являются необязательными получателями для представления значения String и Int,поэтому вам нужно развернуть его перед использованием

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

Если вы на 100% уверены, что всегда будет значение, вы можете использовать эквивалент «принудительного развертывания», используя необязательныйgetter и вам больше не нужно, если позволите:

let fbId = fbJson["id"].stringValue

В вашем коде:

surveyW.karmaWin = endedSurvey["karma"].intValue
0 голосов
/ 22 ноября 2018

Значение, содержащееся в "karma", не является String.Вы пытаетесь принудительно разыграть его с помощью SwiftyJSON, но он говорит, что у него ноль.Сначала вам нужно извлечь значение как есть - .int, а затем преобразовать его в другое значение, если это необходимо.

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