Я использую следующую структуру для чтения из JSON.
struct ConsumedRecipe: Codable {
var name: String
var userStats: Stats?
var globalStats: Stats?
struct Stats: Codable {
var rating: Double?
var time: TimeInterval?
}
init(name: String, userStats: Stats, globalStats: Stats) {
self.name = name
self.userStats = userStats
self.globalStats = globalStats
}
}
Предположим, что у globalStats есть считанные значения, а у userStats нет.Таким образом, они равны нулю.
При выполнении приложения я получаю значение для userStats.rating.Если я попытаюсь присвоить рейтинг напрямую, он останется равным нулю.
Например:
userStats.rating = 2.0 remains nil.
Я предположил, что это как-то связано со всей подструктурой статистики (я не уверенчто является правильным термином) быть ноль.Поэтому я попытался добавить следующий промежуточный шаг.
var tempStats: Stats! = Stats()
tempStats.rating = 2.0
userStats? = tempStats
Это все равно оставляет значение userStats.rating равным nil.
Что мне здесь не хватает?Я правильно понимаю, что это какая-то проблема инициализации?
Дополнительная информация:
Я думаю, что моя проблема может быть связана с кодом инициализации, инициируемым из JSON: Следующее:
init?(json: Data) // take some JSON and try to init a ConsumedRecipe from it
{
do {
let newValue = try JSONDecoder().decode(ConsumedRecipe.self, from: json)
self = newValue
} catch let error as NSError {
print("Reading Recipe Failed: \(error)")
return nil
}
}
Те, которые означают, что я не могу эту часть (userStats) позже?