我的任务管理器应用程序中有两个结构:
struct Task {
var identifier: String
var title: String
var tags: [String] // Array of tag identifiers
}
struct Tag {
var identifier: String
var title: String
}
然后我有一个类来存储它们:
class TaskStore: ObservableObject {
@Published var tasks = [String:Task]()
@Published var tags = [String:Tag]()
}
我将其作为.environmentObject(taskStore)
.
如果以下任何一项错误(违反不良做法),请纠正我:
在我的TaskView
我有:
@EnvironmentObject var taskStore: TaskStore
var taskIdentifier: String // Passed from parent view
private var task: Task {
get {
return taskStore.tasks[taskIdentifier]! // Looks up the task in the store
}
}
private var tags: [Tag] {
get {
return taskStore.tags
}
}
问题是,在学习 SwiftUI 时,我被告知在制作某些组件时(比如在这种情况下让您更改标签数组的选择器)它应该接受对值/集合的绑定,或者说我想制作任务标题可编辑,我需要绑定到task.title
属性,这两个我都做不到,因为(基于我定义和计算的方式task
)我无法在task
.
我在这里做一些违反最佳实践的事情吗?或者沿着这条路径,我在哪里偏离了在环境对象中存储真实点的正确方式,并使它们在子视图中可编辑。