Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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
Ios SwiftUI@FetchRequest在应用程序重新启动之前不会更新视图_Ios_Swift_Xcode_Swiftui - Fatal编程技术网

Ios SwiftUI@FetchRequest在应用程序重新启动之前不会更新视图

Ios SwiftUI@FetchRequest在应用程序重新启动之前不会更新视图,ios,swift,xcode,swiftui,Ios,Swift,Xcode,Swiftui,我在ToDo应用程序中有两个视图,一个视图允许用户添加新的ToDo并将其标记为已完成,另一个视图显示日历,允许用户查看任何给定日期可能已完成的所有ToDo。ToDo实体和DayOfYear实体之间存在多对一关系。当用户点击ToDo Complete按钮时,我更新核心数据中ToDo下的completedDay关系。当我立即切换到日历视图时,FetchRequest不包含任何内容,即使我在更新关系后立即保存更新的上下文。但当我重新启动应用程序时,日历视图会正确显示已完成的待办事项 do {

我在ToDo应用程序中有两个视图,一个视图允许用户添加新的ToDo并将其标记为已完成,另一个视图显示日历,允许用户查看任何给定日期可能已完成的所有ToDo。
ToDo
实体和
DayOfYear
实体之间存在多对一关系。当用户点击ToDo Complete按钮时,我更新核心数据中ToDo下的
completedDay
关系。当我立即切换到日历视图时,
FetchRequest
不包含任何内容,即使我在更新关系后立即保存更新的上下文。但当我重新启动应用程序时,日历视图会正确显示已完成的待办事项

do {
    let today = DayOfYear.withDate(convertStringToDate(day), context: context)
    todo.completedDay_ = today
    try self.context.save()
} catch {
    print("Error saving managed object context: \(error)")
}
年度延长日

extension DayOfYear {
    static func withDate(_ day: Date, context: NSManagedObjectContext) -> DayOfYear {
        let request = fetchRequest(NSPredicate(format: "date = %@", day as CVarArg))
        let days = (try? context.fetch(request)) ?? []
        if let day = days.first {
            return day
        } else {
            let newDay = DayOfYear(context: context)
            newDay.date = day
            return newDay
        }
    }
 }
在日历视图中获取请求

@FetchRequest(entity: DayOfYear.entity(), sortDescriptors: [], predicate: NSPredicate(format: "date >= %@ AND date <= %@", Date().startOfMonth() as CVarArg, Date() as CVarArg)) var daysOfYear: FetchedResults<DayOfYear>

FetchRequest
是否应该在核心数据发生变化时更新自身并显示更新后的结果,还是在关系以某种方式更新时不会立即更新?

简短回答:否;时间更长——不总是这样。在您的情况下,示例文本视图正文似乎不直接依赖于
daysOfYear
(调用结束不是依赖项),因此视图不会更新;时间更长——不总是这样。在您的例子中,示例文本视图主体似乎不直接依赖于
daysOfYear
(调用闭包不是依赖项),因此视图不会更新。
Text("Completed ToDos").font(.title)
    .onAppear {
        print(self.daysOfYear)
        // prints empty until I restart the app
    }