所以,我想要一个Text
根据我的 CoreData 模型的内容来改变它的内容。为此,我在 Xcode beta 4 中使用了一个计算属性,但它似乎不再起作用了。这是一个错误还是我没有看到其他问题?
self.objectWillChange.send()
我遇到的问题是我的视图(和计算的属性)在我的商店中调用时似乎没有得到更新。
我还尝试将我的 var '导出'到商店并从那里获取它,结果相同......
编辑:
我只是对另一个类进行了同样的尝试,但它并不能仅objectWillChange.send()
用于但仅与@Published
它一起工作,如果从 NSObject 继承的类即使停止工作...
我刚刚发现:与
struct Today: View {
@EnvironmentObject var myStore: DateStore
var hasPlans: Bool {
guard let plans = myStore.getPlans() else { return false }
return plans.isEmpty
}
var body: some View{
VStack{
Text(hasPlans ? "I have plans":"I have time today")
Button(action: {
self.myStore.addPlans(for: Date())
}) {
Text("I have plans")
}
}
}
class DateStore: NSObject, ObservableObject, NSFetchedResultsControllerDelegate {
private var fetchedResultsController: NSFetchedResultsController<DateStore>
//...
public func addPlans(for date: Date){
//{...}
if let day = self.dates.first(where: { $0.date == date}){
day.plans += 1
saveChanges()
}else{
self.create(date: dayDate)
}
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
self.objectWillChange.send()
}
}
这是我的问题的一个非常简化的版本,我知道我的 DataModel 工作是因为值发生了变化并被self.objectWillChange.send()
调用,但我的视图由于某种原因没有更新......