@FetchRequest 属性包装器是不是会在发生更改时自动通知?
Posted
技术标签:
【中文标题】@FetchRequest 属性包装器是不是会在发生更改时自动通知?【英文标题】:Does the @FetchRequest property wrapper automatically notify when changes happen?@FetchRequest 属性包装器是否会在发生更改时自动通知? 【发布时间】:2020-11-23 23:20:03 【问题描述】:如果我使用的是 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】:是的,如果您在勾选使用 CoreData 和 CloudKit 时设置了不在 Apple 提供的默认代码中的 automaticallyMergesChangesFromParent = true
。
let container = NSPersistentCloudKitContainer(name: "MyApp")
container.viewContext.automaticallyMergesChangesFromParent = true
【讨论】:
以上是关于@FetchRequest 属性包装器是不是会在发生更改时自动通知?的主要内容,如果未能解决你的问题,请参考以下文章
在 UUID 类型属性上使用 @FetchRequest 谓词过滤进行不可靠更新?