问题标签 [nspersistentcloudkitcontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
162 浏览

swift - 正确使用 CloudKit 容器

我有一个应用程序,它使用 NSPersistentCloudKitContainer 进行 iCloud 同步到需要它并且适用于所有平台(iPhone/iPad/Mac)的用户。但是现在,尝试添加 Apple Watch 支持时,我意识到我可能一直以来都错误地实现了 CloudKit。

代码:

我注意到了什么:

我的测试设备上只有 10 个项目。当我启动手表应用程序并查看控制台时,它似乎正在浏览我曾经做过的每一次添加和删除项目的整个历史,这使得我需要很长时间才能下载我实际拥有的 10 个项目左边。

我查看了我的 iCloud 存储,发现我的应用程序占用了大量空间 (48 MB),而这 10 个项目只是附有一些字符串的实体

研究:

我做了很多研究,发现只有在用户不使用 iCloud 同步时才设置 NSPersistentHistoryTrackingKey。但是当我也为 iCloud 用户启用 NSPersistentHistoryTrackingKey 时,手表应用程序仍然需要很长时间才能下载这 10 个项目。

我知道 Core Data 可能很棘手,并且更改persistentStoreDescriptions容器的属性或其他属性对于现有用户来说可能是一个破坏应用程序的错误。所以我需要一些适用于新用户和现有用户的东西。

问:

有谁知道如何解决这个问题或遇到过类似的问题?我已经尝试解决这个问题将近一个星期了,任何帮助将不胜感激!

0 投票
0 回答
21 浏览

swift - 数据写入 Core Data 时 Internet 丢失。尽管使用了 NSPersistentCloudKitContainer,但没有自动同步

我创建了一个数据,它存储在我的应用程序的核心数据中。此代码创建一个数据并保存到应用程序的核心数据。

我的应用程序的互联网连接被切断,这意味着数据没有上传到 iCloud。我故意切断了互联网,以便我可以检查一旦互联网恢复并重新启动应用程序是否会发生同步。但是,同步没有发生。(是的,我使用了 NSPersistentCloudKitContainer。)

是否有手动让应用程序检查应用程序的核心数据和 iCloud 之间的差异以手动相互同步的功能?

0 投票
0 回答
58 浏览

swift - 来自公共 NSPersistentCloudKitContainer 的记录在几秒钟内同步到 iCloud,但仅在启动时从物理设备?

我目前正在开发的 iPhone 应用程序适用于 iOS >= 14.0 应用程序记录的很大一部分使用 AppDelegate 中的以下命令共享到公共 iCloud 容器:

记录在几秒钟内同步到 iCloud 容器,但仅在启动时同步到物理设备,有时我使用以下代码获取新记录:

这是 refreshPublicObjects 函数:

我是否缺少任何东西来及时从 iCloud 获取更新,而不仅仅是在启动时,甚至用户都没有刷新表格视图?

在此处输入图像描述

0 投票
1 回答
177 浏览

ios - 使用 CloudKit 进行轻量级 CoreData 迁移

Core Data 是否可以处理简单的数据模型添加,例如没有我进一步“帮助”的新属性?就我而言,我有一个应用程序使用 Core Data 来处理与用户个人资料相关的各种事情。我有一个名为 Profile 的现有数据模型实体,我想将 2 个新属性添加到:

hasPublished: Boolean

lastDetail: String

那么,这是否涵盖了我的情况?我没有重新命名任何东西,只是添加。

还有一点需要注意的是,我正在使用 NSPersistentCloudKitContainer 作为信息可以在用户设备之间共享。

0 投票
0 回答
22 浏览

ios - 查询用户在 iPhone 或 iDevice 之间同步数据

我有一个使用核心数据的相册应用程序。截至目前,它不使用登录,我也不打算这样做。我的要求是专辑应该在用户的多个 iDevice 上同步。我正在观看https://developer.apple.com/videos/play/wwdc2019/202/(使用 CloudKit 使用核心数据),它说这样做非常简单。此外,此https://developer.apple.com/icloud/cloudkit/表示限制为 10GB。我在这里有点困惑,10GB 是否计入我所有用户的存储容量还是每个用户?希望是后者。有人也可以让我知道我在使用 Cloudkit 方面是否走在正确的道路上吗?

0 投票
1 回答
182 浏览

swift - 使用 iCloud 迁移核心数据版本

我有一个正在生产中的 Core Data 应用程序,并且想向现有实体添加属性。经过研究,我发现这是一个“轻量级迁移”,只需要在加载持久存储之前添加NSMigratePersistentStoresAutomaticallyOptionNSInferMappingModelAutomaticallyOption选项到我的:persistentStoreDescriptions

虽然这看起来很容易解决,但我只有两个问题在其他任何地方都找不到答案:

1. 对于从现在开始更新其应用程序版本的任何人,我可以为应用程序的所有未来版本保留这两个新的迁移选项吗?

2. 由于我使用的是NSPersistentCloudKitContainer,所以在将新的数据模型发布到 CloudKit Dashboard 时,用户当前的应用程序版本是否应该包括两个迁移选项?我担心如果 CloudKit 数据模型与他们的应用程序版本不同,它会在同步他们的项目时崩溃他们的应用程序

非常感谢您对此的任何帮助!改变数据模型总是一种可怕的经历,而且我从来没有做对过,而且总是导致人们的应用程序崩溃。我非常感谢您能提供的任何帮助。

0 投票
0 回答
19 浏览

nspersistentcloudkitcontainer - 处理 NSPersistentCloudKitContainer 初始公共存储同步

我正在尝试使用NSPersistentCloudKitContaineriOS 14 中引入的新公共商店同步功能,但不确定如何处理用户第一次打开应用程序。一旦用户从公共数据库下载了数据,一切都很好。但是在等待它进行第一次同步时我应该怎么做?

目前,我将 Core Data 实体传递到我的 SwiftUI 视图中,以便它们可以在List. 我的一个想法是检查公共存储是否已完成所有数据的下载,如果没有,则调用 CloudKit 并CKRecord在核心数据在后台同步时提取数据版本。

同样,我尝试检查存储是否具有所有数据,如果没有,则从内存存储中捆绑包中的 JSON 文件创建数据。但这会导致多个商店访问特定实体的问题。

这些方法似乎都没有可扩展性。对于我添加的每个新功能,我都必须在展示某些内容之前检查应用程序是否下载了某些版本的公共数据。

0 投票
1 回答
50 浏览

cloudkit - CloudKit 字节到字符串数组

我的 CloudKit 公共数据库上有一条记录,它是通过NSPersistentCloudKitContainer. 在 Core Data 中,属性是类型[String],当我将它添加到公共数据库时,它会转换为Bytes.

当我获取此记录并尝试提取[String]类似内容时

我收到以下错误:

无法将“_NSInlineData”(0x7fe5ae87c2a8)类型的值转换为“NSArray”(0x7fe5ad835f90)。

你应该如何获得CKRecordValueas 类型[String]

0 投票
2 回答
286 浏览

ios - iOS15 B4 NSPersistentCloudKitContainer“帐户暂时不可用”错误

我在 iOS15 beta 4 上使用 NSPersistentCloudKitContainer 跨设备同步核心数据。在设备上启动并登录 iCloud 时,我在日志中收到以下错误:

<NSCloudKitMirroringResult:0x28167ae60> 成功:0 madeChanges:0 错误:<CKError 0x2818a94d0:“帐户暂时不可用”(1028/2011);“由于身份验证令牌错误或丢失,帐户暂时不可用”>

我有以下代码:

0 投票
1 回答
155 浏览

core-data - 向 iCloud 生产发布新的 Core Data Schema

我在 App Store 中有一个应用程序,我正在进行轻量级迁移(添加新属性和新实体,而不是删除任何内容)。从广泛的研究中,我知道我需要为本地版本的数据模型添加我当前核心数据模型的新版本。任何更新他们的应用程序并且只使用本地数据的人都会被自动迁移过来。

但是,当我更新 iCloud 架构(来自 icloud.developer.apple.com)时,我找不到任何有关发生的事情。主要是,我担心使用旧版本应用程序并使用 iCloud 的用户。当我在 iCloud 网站上更新架构时,使用旧版本应用程序的用户是否会丢失他们当前的数据或无法同步他们的数据,因为他们的本地架构将与 iCloud 不同?

另外,我正在使用一个NSPersistentCloudKitContainer用于将核心数据与 CloudKit 同步。

非常感谢任何帮助,因为我不想弄乱任何人的数据!