Core data 是否可以在SwiftUI的场景代理中为核心数据实体创建提取请求
我正试图使我的核心数据实体与我正在使用的Web服务保持同步。问题是web服务每天都更新项目,因此我尝试创建一个获取请求,将缓存项目与远程项目进行比较,并在有任何更改、删除或添加时更新缓存项目 理想情况下,我希望在用户进入应用程序之前完成此操作。因此,我试图在场景代理中创建一个获取请求 逻辑是这样的:在应用程序加载时,我解析json Web服务中的项目。同时,我为现有的本地核心数据实体创建一个获取请求,将本地项与远程项进行比较,并在需要时更新缓存项Core data 是否可以在SwiftUI的场景代理中为核心数据实体创建提取请求,core-data,swiftui,appdelegate,uiscenedelegate,Core Data,Swiftui,Appdelegate,Uiscenedelegate,我正试图使我的核心数据实体与我正在使用的Web服务保持同步。问题是web服务每天都更新项目,因此我尝试创建一个获取请求,将缓存项目与远程项目进行比较,并在有任何更改、删除或添加时更新缓存项目 理想情况下,我希望在用户进入应用程序之前完成此操作。因此,我试图在场景代理中创建一个获取请求 逻辑是这样的:在应用程序加载时,我解析json Web服务中的项目。同时,我为现有的本地核心数据实体创建一个获取请求,将本地项与远程项进行比较,并在需要时更新缓存项 这可能吗?任何关于如何以及何时这样做的建议或建议
这可能吗?任何关于如何以及何时这样做的建议或建议都将不胜感激 没有那么复杂。在创建视图时,您已经在ScenedLegate中具有上下文。只需执行fetch
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let fetchRequest: NSFetchRequest<YourEntity> = YourEntity.fetchRequest()
fetchRequest.sortDescriptors = []
//fetchRequest.predicate = //some filters
let result = try? context.fetch(fetchRequest)//it always returns an array but it may be empty. Fetch may throw if disc is unavailable or some other reasons
//do what you need
let contentView = ContentView().environment(\.managedObjectContext, context)
通常,可以将UUID存储为对象版本。每次在后端修改对象时,都可以使用新的UUID更新版本。因此,您只需要检查版本-如果版本不同,则需要更新对象。但它仅在用户无法脱机修改对象的情况下使用。如果可以的话,一定有一些复杂的逻辑来解决冲突。谢谢。我想得太多了。