Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI绑定对象数组并显示更改_Swift_Data Binding_Swiftui - Fatal编程技术网

SwiftUI绑定对象数组并显示更改

SwiftUI绑定对象数组并显示更改,swift,data-binding,swiftui,Swift,Data Binding,Swiftui,我正在尝试在SwiftUI中构建一个小应用程序。它应该显示一个项目列表,并可能更改这些项目。但是,我无法弄清楚数据流是如何正确工作的,因此更改将反映在我的列表中 假设我有这样一类项目: class Item: Identifiable { let id = UUID() var name: String var dateCreated: Date } class ItemStore { var items = [Item]() } 这个类有一个初始值设定项,它

我正在尝试在SwiftUI中构建一个小应用程序。它应该显示一个项目列表,并可能更改这些项目。但是,我无法弄清楚数据流是如何正确工作的,因此更改将反映在我的列表中

假设我有这样一类项目:

class Item: Identifiable {
    let id = UUID()
    var name: String
    var dateCreated: Date
}
class ItemStore {
    var items = [Item]()
}
这个类有一个初始值设定项,它给每个成员分配一个有用的随机值

现在让我们假设我想在另一个类中存储一个项目列表,如下所示:

class Item: Identifiable {
    let id = UUID()
    var name: String
    var dateCreated: Date
}
class ItemStore {
    var items = [Item]()
}
此项目存储是my SceneDelegate的一部分,并交给ContextView

现在我想做的是将一个元素交给另一个视图(从NavigationView的堆栈),在那里它将被更改,但我不知道如何保存所做的更改,以便它们将反映在ContextView中显示的列表中。 我的想法是使项目存储成为环境对象。但是,在item类中我必须做什么,如何将该项传递给另一个视图,这样才能工作呢? 我已经尝试了一些来自苹果WWDC的视频,但是那里的包装已经被弃用了,所以没有用


感谢您的帮助。非常感谢

可能的方法是使用
可观察对象
(来自联合收割机)进行存储

class ItemStore: ObservableObject {
    @Published var items = [Item]()

   // ... other code 
}

class Item: ObservableObject, Identifiable {
    let id = UUID()
    @Published var name: String
    @Published var dateCreated: Date

   // ... other code 
}
在从属视图中

struct ItemStoreView: View {
   @ObservedObject var store: ItemStore
   // ... other code 
}

struct ItemView: View {
   @ObservedObject var item: Item
   // ... other code 
}

可能的方法是使用
可观察对象
(来自联合收割机)进行存储

class ItemStore: ObservableObject {
    @Published var items = [Item]()

   // ... other code 
}

class Item: ObservableObject, Identifiable {
    let id = UUID()
    @Published var name: String
    @Published var dateCreated: Date

   // ... other code 
}
在从属视图中

struct ItemStoreView: View {
   @ObservedObject var store: ItemStore
   // ... other code 
}

struct ItemView: View {
   @ObservedObject var item: Item
   // ... other code 
}

看看这里,这可能会有帮助:看看这里,这可能会有帮助:如果我这样做,将项目从ItemStoreView传递到ItemView的正确方法是什么,这样我就可以在项目的名称成员上使用TextField(需要绑定到字符串)?如果我这样做,将项从ItemStoreView传递到ItemView的正确方法是什么,这样我就可以在项的名称成员上使用TextField(需要绑定到字符串)?