- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 NSPersistentCloudKitContainer
通过 CloudKit 在不同设备之间同步数据。它适用于新项目,但是当我将它用于旧项目时,使用 NSPersistentContainer
添加的旧数据不会同步。
我想实现的是在将 NSPersistentContainer
更改为 NSPersistentCloudKitContainer
后同步添加的旧数据。可能吗?
最佳答案
我找到了适用于我的 Core Data 数据库的解决方案 - 我的数据库非常复杂,具有多个多对多关系(名为 Somnus 的手术/麻醉日志应用程序)
我首先为我所有的核心数据实体创建了一个名为 sentToCloud
的新属性,并在核心数据模型中默认将其设置为 FALSE
。
在现有用户的第一次加载时:
"sentToCloud == FALSE"
获取请求sentToCloud
更改为TRUE
,然后保存MOCNSPersistentCloudKitContainer
开始同步我已按照适用于我的数据库的“优先级”顺序执行此操作,假设 iCloud 同步 session 与修改核心数据的顺序相匹配。在我的测试中,情况似乎是这样:
NSPersistentCloudKitContainer
重新连接所有关系CKAsset
),因为它不是我数据库中最重要的部分我的数据库已成功从 iPad 同步到 iPhone,并且所有关系和二进制数据都显示正确。
现在我只需要一种方法来告诉用户数据何时同步(和/或某种进度),并让他们完全关闭它。
附录
因此,在重置 iCloud 仪表板上的所有数据并删除我的 iPhone 和 iPad 上的应用程序后,我又试了一次。
第二次它只同步了一些数据。它似乎在处理大型同步请求时仍然存在问题(控制台中有很多 .limitExceeded
CKErrors)。
令人沮丧的是,目前尚不清楚它是否会中断重试请求 - 我认为不会。我把它放了一夜,仍然没有进一步同步,只有更多 .limitExceeded
CKErrors。
也许这就是他们不想同步现有数据的原因?
就我个人而言,我认为这很愚蠢。有时用户会对他们的数据进行批处理,这将涉及在一次操作中更新数千个 Core Data 对象。如果这只是因为 .limitExceeded
CKErrors 而卡住,NSPersistentCloudKitContainer
将不是一个很好的同步解决方案。
他们需要一种更好的方法来处理这些错误(将请求分解成更小的请求),以及查看正在发生的事情的能力(并可能向用户呈现一些 UI)。
我真的需要它来工作,因为就目前而言,没有办法使用 CloudKit 同步多对多核心数据关系。
我只是希望他们仍在致力于这个类(class)并对其进行改进。
关于ios - 使用 NSPersistentCloudKitContainer 同步旧数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56875823/
我正在构建一个使用 NSPersistentCloudKitContainer 的应用程序。该应用程序没有共享功能,其唯一的后端功能是使用 cloudkit 容器在用户设备之间同步数据。该设置相当准系
我在我的生产应用中使用了 NSPersistentCloudKitContainer,但我的一些用户告诉我,在更新到引入了 NSPersistentCloudKitContainer 的最新版本后,数
我最近发布了一个使用 NSPersistentCloudKitContainer 的应用程序.在开发中,我的数据库按预期跨设备同步,但在生产中,我的数据库根本没有同步。调试完情况后,我意识到我必须将
我已将日期触发的本地通知添加到我的应用程序中,现在我希望用户能够在其拥有该应用程序的所有设备上获得他们在一台设备上设置的通知。我将他们设置的通知保存在核心数据实体中(保存通知标识符和它应该被触发的日期
我正在努力解决以下问题。尽管进行了深入搜索,但我还没有成功。 我的开发环境是 macOS Big Sur Beta 下的 Xcode 12.0 beta(但是,问题在 Catalina 下的 Xcod
集成 NSPersistentCloudKitContainer 非常简单,当用户在实现同步后添加数据时工作正常。但是,如果用户已经在不同的设备上添加了相同的数据,并且将在更新时启用同步,则所有设备上
我正在开发一个使用 NSPersistentCloudKitContainer 的应用程序在设备之间共享数据。核心数据模型有多个实体,其中两个实体通过与其各自逆的关系连接。我遇到的问题是,当我将关系设
所以我的问题如标题中所写,如果你可以使用 NSPersistentCloudKitContainer 在不同的应用程序之间共享数据,比如如果你有一个不同的 iPad 应用程序,一个不同的 iPhone
所以我的问题如标题中所写,如果你可以使用 NSPersistentCloudKitContainer 在不同的应用程序之间共享数据,比如如果你有一个不同的 iPad 应用程序,一个不同的 iPhone
Apple 推出了 NSPersistentCloudKitContainer iOS 13 使我们能够将 CloudKit 与 Core Data 结合使用。我几乎可以立即在不同的设备上运行它,但我
我正在使用 NSPersistentCloudKitContainer 来同步数据。使用新的 iCloud 内容刷新 UITableView 内容的正确代码是什么?如果我关闭 UITableView
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 在不同设备之间同步数据。它适用于新项目,但是当我将它用于旧项目时,使用 NSPersistentCont
我遵循了与“将核心数据与 CloudKit 结合使用”中相同的步骤: 新项目 启用核心数据 + Cloud Kit 添加 iCloud/CloudKit 授权 + 后台模式/远程通知授权。 在 iPh
我正在开发一个应用程序,该应用程序使用 NSPersistentCloudKitContainer 在 iOS 15 中使用新的共享支持.我没有办法告诉 Core Data 一个对象或一组对象不再共享
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 和 CoreData 在用户之间同步和共享一些记录。从 Apple website 中根据我的需要调整示
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 和 CoreData 在用户之间同步和共享一些记录。从 Apple website 中根据我的需要调整示
我知道这是一个常见问题,也许之前已经问过很多次了。我还知道如何通过启用应用程序组使用核心数据与应用程序扩展共享单个数据库。我现在正在使用 NSPersistentCloudKitContainer 同
我无法将令人兴奋的核心数据堆栈更改为 NSPersistentCloudKitContainer,因为这只是 iOS 13 及更高版本的支持功能,但我希望为 iOS 13 及更高版本设置该设置,同时为
我正在尝试使用 Core Data 和 CloudKit 构建一个非常基本的应用程序。我在我的 Mac 上登录了我的 CloudKit 帐户,然后按照说明运行 Apple 在他们的 website 上
我正在为我的核心数据应用程序使用 NSPersistentCloudKitContainer。在测试期间,我检查了在设备上所做的更改是否会在几秒钟内同步到 CloudKit。 但是,当我在设备上禁用
我是一名优秀的程序员,十分优秀!