我正在尝试实现一个应用程序,其中使用来自服务器调用的响应来构建视图。视图可以是5种或6种不同类型之一,具体取决于返回的数据,所有这些类型对传递给它们的数据的形状和类型都有不同的要求。为传入数据定义结构/类的最佳方法是什么?到目前为止,使它起作用的唯一方法是使用:Any作为数据类型
这是我正在尝试做的大招...
.in
答案 0 :(得分:1)
正如Yonat所述,enum
在这里效果很好:
struct PageView: View {
enum Response {
case something(DecodableResponseA)
case orOther(DecodableResponseB)
}
// if you were using id + type to determine what your response was, they are
// unnecessary now, but only you know what you were using them for
let id: Int
let response: Response
var body: some View {
self.viewForResponse(response)
}
private func viewForResponse(_ response: Response) -> some View {
switch response {
case .something(let somethingResponse): return AnyView(SomethingView())
case .orOther(let orOtherResponse): return AnyView(OtherView())
}
}
}