Автоматически ли оболочка свойств @fetchRequest уведомляет о возникновении изменений?

#core-data #swiftui

#основные данные #swiftui

Вопрос:

Если я использую NSPersistentCloudKitContainer, я вижу в файле sqlite, что изменения автоматически синхронизируются. Я также могу вносить изменения в панель управления CloudKit, перезапускать приложение и просматривать изменения. Если я использую @FetchRequest для загрузки некоторых элементов, должен ли массив элементов автоматически обновляться?

 // Fetch some items
@FetchRequest(
        sortDescriptors: [NSSortDescriptor(keyPath: Item.timestamp, ascending: true)],
        animation: .default)
    private var items: FetchedResults<Item>

// Show them in a List

List(items) { item in
  VStack {
    Text("Item at (item.timestamp!, formatter: itemFormatter)")
  }
}
 

Ответ №1:

Да, если вы установили automaticallyMergesChangesFromParent = true , чего нет в коде по умолчанию, предоставленном Apple, при проверке использования CoreData и CloudKit.

 let container = NSPersistentCloudKitContainer(name: "MyApp")
container.viewContext.automaticallyMergesChangesFromParent = true