首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当WidgetKit中的核心数据发生变化时,如何更新CloudKit时间线条目?

当WidgetKit中的核心数据发生变化时,如何更新CloudKit时间线条目?
EN

Stack Overflow用户
提问于 2020-09-19 11:18:42
回答 1查看 825关注 0票数 2

我有一个在CloudKit中使用核心数据的应用程序。设备之间的更改是同步的。

主目标具有后台模式功能和选中的“远程通知”。主目标和小部件目标都具有相同的App,并且都具有iCloud功能,服务设置为CloudKit,容器中的容器被选中。

对于从小部件访问核心数据,我使用CoreDataStack,如this answer所示。在WidgetKit文件中,我有一个函数,它执行提取请求并返回Int --从该请求中返回许多行。稍后,我将在小部件视图中显示这个数字。

但是,如果CloudKit中的核心数据发生变化(例如,在另一个设备用户添加或删除记录上),那么Int可能是不正确的。

当发生这样的更改时,如何请求更新WidgetKit时间线条目?(如果数据在另一个设备或当前设备上发生了更改。)谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-19 11:28:08

一个可能的解决方案是观察NSPersistentStoreRemoteChange通知。

在您的核心数据堆栈中:

代码语言:javascript
复制
let container = NSPersistentContainer(name: "MyStuff")
let description = container.persistentStoreDescriptions.first
description?.setOption(true as NSNumber, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)

然后,您可以检测到如下所述的通知:

但是有一个缺点:当检测到远程更改时,这个通知会被触发不止一次(通常是在短系列中)。为了避免经常刷新,您可能需要使用计时器来延迟刷新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63968158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档