首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么示例应用程序使用两个事实来源?

为什么示例应用程序使用两个事实来源?
EN

Stack Overflow用户
提问于 2022-08-02 21:59:47
回答 1查看 111关注 0票数 1

我试图弄清楚为什么苹果在两个不同的视图中用@State实例化DailyScrum.Data。我以为你应该只有一个真相来源。我猜一种是用于创建新的scrum数据,另一种是提供更新或编辑scrum数据。但我不确定。

代码语言:javascript
复制
import SwiftUI

struct DetailView: View {
    @Binding var scrum: DailyScrum
    
    @State private var data = DailyScrum.Data()
    @State private var isPresentingEditView = false
    
    var body: some View {
        List {
            Section(header: Text("Meeting Info")) {
                NavigationLink(destination: MeetingView(scrum: $scrum)) {
                    Label("Start Meeting", systemImage: "timer")
                        .font(.headline)
                        .foregroundColor(.accentColor)
                }
               
            }
           
        }
    }
}
代码语言:javascript
复制
import SwiftUI

struct ScrumsView: View {
    @Binding var scrums: [DailyScrum]
    @Environment(\.scenePhase) private var scenePhase
    @State private var isPresentingNewScrumView = false
    @State private var newScrumData = DailyScrum.Data()
    let saveAction: ()->Void
    
   var body: some View {
        List {
            ForEach($scrums) { $scrum in
                NavigationLink(destination: DetailView(scrum: $scrum)) {
                    CardView(scrum: scrum)
                }
                .listRowBackground(scrum.theme.mainColor)
            }
        }
        .navigationTitle("Daily Scrums")
    }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 22:38:29

DailyScrum.Data()并不是真正扮演source of truth的角色。

如果您密切关注,DailyScrum.Data()是作为类似于(临时/助手变量)的东西创建的。

假设您有一个编辑视图,用户可以编辑数据。当用户输入新数据时,这些新数据将暂时存储在DailyScrum.Data()中,因此不会影响您的实际source of truth

然后,只有当用户确认要保存时,才会将这些数据传递给您的source of truth保存。

现在您知道了为什么需要这个DailyScrum.Data(),因为没有它,您的所有数据都会立即更改,甚至在用户确认要更改之前。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73214238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档