Итак, я хочу иметь Text
, который изменяет свое содержимое в зависимости от содержимого моей модели CoreData. Для этого я использовал вычисляемое свойство в Xcode beta 4, но, похоже, оно больше не работает. Либо это ошибка, либо есть другая проблема, которую я не вижу?
Проблема, с которой я столкнулся, заключается в том, что мой View (и вычисляемое свойство), похоже, не обновляется, когда 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()
}
}
Это очень упрощенная версия моей проблемы, и я знаю, что моя модель данных работает, потому что меняются значения и вызывается self.objectWillChange.send()
, но мое представление по какой-то причине не обновляется ...
objectWillChange
. - person matt   schedule 01.08.2019