【发布时间】:2021-12-30 09:01:30
【问题描述】:
如何在 SwiftUI 中初始化嵌套结构?这个结构将在从 RESTAPI 解析 JSON 后填充,但我想让它作为 Observable 可用,以便我的视图稍后可以在填充数据时访问它。
final class APIController: ObservableObject {
@Published var iotshadow: IotShadow
IotShadow 是几个层次的嵌套结构。逐行为其分配默认值似乎非常过分。另外,如果我将其保留为可选IotShadow?,那么我似乎不允许访问它,因为它抱怨需要解开该值。
在这种情况下,初始化结构的正确方法是什么? Swift 新手,但经验丰富的 Java/C 程序员,所以也许我在这里的想法是错误的。
谢谢, 马库斯
【问题讨论】:
-
如果您将其定义为可选(使用 ?),那么是的,您必须在访问它之前检查它是否为 nil。我建议阅读 Swift 选项。您能否显示您在展开时遇到的代码/错误。谢谢
-
@Fogmeister 这是我得到的错误“可选类型'IotShadow的值?'必须解包以引用已包装基本类型“IotShadow”的成员“状态””,它来自打印语句
iotshadow = try! JSONDecoder().decode(IotShadow.self, from: jsonData) print("Reported Relay1: \(iotshadow.state.desired.RELAY1)") -
IotShadow 是可选的,所以我认为您需要添加一个 ?在您的打印行中的
iotShadow之后。一定要阅读如何使用可选的。它们是 Swift 中所有开发的核心。知道如何以及为什么使用它们非常重要。 ?????????? -
@Fogmeister,感谢您的实际操作,我会采纳您的建议并阅读可选选项,以便更好地了解如何处理它们。