- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近发布了一个使用 NSPersistentCloudKitContainer
的应用程序.在开发中,我的数据库按预期跨设备同步,但在生产中,我的数据库根本没有同步。调试完情况后,我意识到我必须将 iCloud 架构发布到生产环境中。但即使这样做了,我的应用程序也没有在生产中的设备之间同步。
有没有人经历过这个?我还需要为 NSPersistentCloudKitContainer
做些什么吗?在生产中工作?
最佳答案
尽管遵循了 Apple 文档中的所有步骤 NSPersistentCloudKitContainer
.
为了确保您的核心数据实体都在开发环境中正确创建,在部署到生产环境之前,他们建议运行(一次).shouldInitializeSchema
在您的 NSPersistentCloudKitContainer
上.
问题是,这几个月都无效(见下文...)所以另一种方法 - 以及我这样做的方式 - 是动态创建我的所有数据,保存到核心数据它通过 NSPersistentCloudKitContainer
在开发环境中创建了模式.然后,当它在我的设备上完美运行时,我将其部署到生产环境。
虽然它对我的数据运行得非常好,但它不适用于我在现实世界中使用我的 App Store 版本的任何用户。这真是令人头疼。
事实证明,我的核心数据模型的 CloudKit 架构中的一个或两个自定义类型中缺少一些自定义字段 - 我的模型中存在但我不再使用的属性(一个只是我从未使用过的空字符串)。
问题是,NSPersistentCloudKitContainer
不喜欢这样,即使 NSManagedObject
具有您不使用的属性,它们必须存在于 CloudKit 架构中才能正常工作。似乎需要一个自定义字段来精确匹配核心数据模型中的每个属性。
为什么它可以在我的设备上运行可能与以下事实有关在 iCloud 中。
自定义类型(如您的 CloudKit 仪表板中所见)需要具有与相应实体的每个核心数据属性相匹配的自定义字段,以及每个“一对一”关系的自定义字段(我也缺少其中一个)。都是以CD_
开头的字段由 NSPersistentCloudKitContainer
自动生成.
“对多”关系似乎存储在其他地方。
在 Apple 的帮助下,他们建议运行 .shouldInitializeSchema
更换initializeCloudKitSchema(options:)
(尚未在他们的文档中!)在容器上(仅一次)以填补所有空白。
当我这样做时,我注意到它实际上并没有添加任何缺失的自定义字段,当我“部署到生产”时,没有需要做任何更改,虽然它仍然在我的设备上工作,但生产设备无法工作。经过进一步分析,未添加缺少的字段...
因此,相反,我确保将所有这些缺失属性和“一对一”关系的数据写入我的测试设备,然后再试一次。
我可以看到它们现在都存在于我部署到生产中的开发模式中。更改中列出了所有缺少的自定义类型和自定义字段。
现在一切都适用于我的用户!
多么复杂的过程。部分是我的错,部分是苹果的错。
关于ios - 生产环境中的 NSPersistentCloudKitContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58218874/
我正在构建一个使用 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。 但是,当我在设备上禁用
我是一名优秀的程序员,十分优秀!