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



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

假设我有一类这样的物品:

class Item: Identifiable {
let id = UUID()
var name: String
var dateCreated: Date
}

这个类有一个初始值设定项,它为每个成员分配一个有用的随机值。

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

class ItemStore {
var items = [Item]()
}

此项目存储是我的SceneDelegate的一部分,并交给ContextView。

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

感谢您的帮助。非常感谢!

可能的方法是使用ObservableObject(来自联合收割机(存储

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 
}

最新更新