问题标签 [ckrecordzone]

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 投票
3 回答
1120 浏览

ios - CloudKit CKRecordZone

我一直在摆弄 CloudKit 一段时间,但我找不到如何使用CKRecordZone的真实示例。我了解他们的能力(即,对记录进行分组,尤其是对于订阅),但是有人有使用过它们的真实体验,并映射出哪个概念吗?

谢谢

0 投票
1 回答
153 浏览

ios - 为什么 CKRecordZone 对象的属性“capabilities”的值等于 7?

在我的 iOS 应用程序中,我创建了一个自定义区域,然后通过 CKFetchRecordOperation 获取该区域。之后,我让控制台打印获取的 CKRecordZone 的属性“capabilities”的值。值是7。怎么会这样?

根据文档,该值是枚举类型CKRecordZoneCapabilities,它只有值1 << 0和值1 << 1。所以,我不知道为什么值可以是7。

0 投票
1 回答
190 浏览

ios - CKRecordZone 中的记录仍显示在 CloudKit 仪表板中

我们有一个将记录同步到 CloudKit 的应用程序。

它们存储在自定义区域中。我们需要提供一个从 CloudKit 中“清除所有数据”的功能。由于记录的数量可能很高,我们不想单独或批量删除它们(可能是很多批次)。所以我们直接删除自定义区域。

区域已成功删除,但记录仍显示在 CloudKit 仪表板中。这是预期的吗?

0 投票
1 回答
367 浏览

ios - 优化 CKFetchRecordZoneChangesOperation 以获取所需键

在我的 CloudKit 应用程序中,我在存储所有 CKRecords 的私有数据库中创建了一个区域。CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAsset。我CKFetchRecordZoneChangesOperation用来查找该区域的记录更改,并下载它们。我想优化,CKFetchRecordZoneChangesOperation以便我只包含desiredKeys在下载中,所以我当时不下载 CKAsset,但似乎没有任何方法可以为每个记录类型指定这个。相反,您似乎只能指定desiredKeysCKFetchRecordZoneChangesOptionszoneID 上设置的 on 。

CKFetchRecordZoneChangesOperation那么,考虑到该区域中有不同类型的记录类型,我如何在我的提取中指定“desiredKeys” ?我在这里错过了一些简单的东西吗?我猜的另一个(极端)选项是为每种记录类型创建一个记录区域,但如果有可能的话,我不想走这条路。

谢谢。

0 投票
1 回答
241 浏览

swift - 从 CloudKit 获取包括 CKReference 的数据

我已经使用 CloudKit 服务很长时间了,因此在那里存储了大量数据。现在,我有第二个设备连接到 CloudKit,从而获取所有数据。

假设我有两种记录类型TaskList,其中Task有一个指向List的 CKReference 。通常,在处理每条记录时,我会将其保存到本地缓存中。实际情况更复杂,有多个关系。

问题:

如果一个任务记录到达,但它的链接列表记录还没有出现,会发生什么?

我应该缓存此记录以供以后处理,还是启动单独的每个记录操作以首先提取该特定列表

还有其他建议吗?

0 投票
0 回答
125 浏览

cloudkit - 如何存储 CloudKit 区域更改令牌?

所以我目前使用以下方法来获取和设置区域更改令牌:

我尝试通过创建从数据库到区域的路径来唯一地定位区域。但是,由于共享数据库可能有多个具有相同区域名称的区域,因此我附加了区域所有者名称。

问题是,这是存储区域更改令牌的正确方法还是有更好、更有效的方法?

0 投票
1 回答
193 浏览

swift - 我们应该在 CKDatabase 和 CKRecordZone 中分别缓存一个 CKServerChangeToken 吗?

在我的应用程序中,我使用 CloudKit 和用户的私有 CKDatabase 来存储记录。当应用程序启动时,我会按照 WWDC 2016 的建议获取更改。

首先,我调用fetchDatabaseChanges(database: CKDatabase, databaseTokenKey: String, completion: @escaping () -> Void)方法。在此方法中, changesOperation.fetchDatabaseChangesCompletionBlock我将 CKServerChangeToken 保存到 userDefaults 以获取密钥:ckDatabaseToken

我也调用了fetchZoneChanges(database: database, databaseTokenKey: databaseTokenKey, zoneIDs: changedZoneIDs, completionchangesOperation.fetchDatabaseChangesCompletionBlock方法fetchDatabaseChanges

fetchZoneChanges方法中有一个operation.recordZoneFetchCompletionBlock. 在这个块中,我们还需要将令牌的值保存到 UserDefaults。我将它保存到ckZoneToken用户默认值中的另一个变量中。所以在里面fetchZoneChanges我得到并保存(从/到UserDefaults)这个ckZoneToken值,在里面fetchDatabaseChanges,我得到并保存(从/到UserDefaults)这个ckDatabaseToken值。

这是正确的技术吗?或者最好只使用两个fetchDatabaseChangesfetchZoneChanges方法中的一个变量来存储CKServerChangeToken?

哪个是最好的方法?

斯威夫特 3,Xcode 9

0 投票
2 回答
266 浏览

ios - 在私有数据库的 ckzone 中查询共享记录不返回任何内容

斯威夫特 4.2 iOS 11.x

我一定错过了一些事情,因为这肯定会起作用。我得到了在自定义区域中查询私有数据库的代码。尽管我在那里有记录,但它什么也没返回。我为所有内容添加了索引!我还更改了权限中的角色,以便任何经过身份验证的用户都可以读取记录。

notificationMedia 是一个全局静态变量,我也用它来保存所说的记录,所以它不会是错误的/不同的。

0 投票
1 回答
74 浏览

ios - 我可以在 CloudKit 的生产环境中即时创建 CKRecordZone

我在代码中创建了一个 CKRecordZone,它当然可以在 CloudKit 上进行开发。

但它会在生产中发挥作用吗?我可以在生产中即时创建 CKRecordZones 吗?还是我需要重新考虑设计?

0 投票
1 回答
224 浏览

ios - 如何将 CKRecordZone 分配给 CKRecord

我正在尝试创建一个数据库,管理员用户可以在其中创建一个存储为组 CKRecord 类型的组。我希望将此记录放置一个自定义区域,该区域以管理员用户决定的组名命名。如何初始化要分配给该自定义区域的组私有记录(不使用已弃用的函数)。