:swiftui结构值是否有更好的替代方法?

时间:2019-10-08 10:25:18

标签: swiftui

我正在尝试实现一个应用程序,其中使用来自服务器调用的响应来构建视图。视图可以是5种或6种不同类型之一,具体取决于返回的数据,所有这些类型对传递给它们的数据的形状和类型都有不同的要求。为传入数据定义结构/类的最佳方法是什么?到目前为止,使它起作用的唯一方法是使用:Any作为数据类型

这是我正在尝试做的大招...

.in

1 个答案:

答案 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())
         }
    }
}