问题标签 [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.
ios - CloudKit CKRecordZone
我一直在摆弄 CloudKit 一段时间,但我找不到如何使用CKRecordZone的真实示例。我了解他们的能力(即,对记录进行分组,尤其是对于订阅),但是有人有使用过它们的真实体验,并映射出哪个概念吗?
谢谢
ios - 为什么 CKRecordZone 对象的属性“capabilities”的值等于 7?
在我的 iOS 应用程序中,我创建了一个自定义区域,然后通过 CKFetchRecordOperation 获取该区域。之后,我让控制台打印获取的 CKRecordZone 的属性“capabilities”的值。值是7。怎么会这样?
根据文档,该值是枚举类型CKRecordZoneCapabilities,它只有值1 << 0和值1 << 1。所以,我不知道为什么值可以是7。
ios - CKRecordZone 中的记录仍显示在 CloudKit 仪表板中
我们有一个将记录同步到 CloudKit 的应用程序。
它们存储在自定义区域中。我们需要提供一个从 CloudKit 中“清除所有数据”的功能。由于记录的数量可能很高,我们不想单独或批量删除它们(可能是很多批次)。所以我们直接删除自定义区域。
区域已成功删除,但记录仍显示在 CloudKit 仪表板中。这是预期的吗?
ios - 优化 CKFetchRecordZoneChangesOperation 以获取所需键
在我的 CloudKit 应用程序中,我在存储所有 CKRecords 的私有数据库中创建了一个区域。CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAsset。我CKFetchRecordZoneChangesOperation
用来查找该区域的记录更改,并下载它们。我想优化,CKFetchRecordZoneChangesOperation
以便我只包含desiredKeys
在下载中,所以我当时不下载 CKAsset,但似乎没有任何方法可以为每个记录类型指定这个。相反,您似乎只能指定desiredKeys
在CKFetchRecordZoneChangesOptions
zoneID 上设置的 on 。
CKFetchRecordZoneChangesOperation
那么,考虑到该区域中有不同类型的记录类型,我如何在我的提取中指定“desiredKeys” ?我在这里错过了一些简单的东西吗?我猜的另一个(极端)选项是为每种记录类型创建一个记录区域,但如果有可能的话,我不想走这条路。
谢谢。
swift - 从 CloudKit 获取包括 CKReference 的数据
我已经使用 CloudKit 服务很长时间了,因此在那里存储了大量数据。现在,我有第二个设备连接到 CloudKit,从而获取所有数据。
假设我有两种记录类型Task和List,其中Task有一个指向List的 CKReference 。通常,在处理每条记录时,我会将其保存到本地缓存中。实际情况更复杂,有多个关系。
问题:
如果一个任务记录到达,但它的链接列表记录还没有出现,会发生什么?
我应该缓存此记录以供以后处理,还是启动单独的每个记录操作以首先提取该特定列表?
还有其他建议吗?
cloudkit - 如何存储 CloudKit 区域更改令牌?
所以我目前使用以下方法来获取和设置区域更改令牌:
我尝试通过创建从数据库到区域的路径来唯一地定位区域。但是,由于共享数据库可能有多个具有相同区域名称的区域,因此我附加了区域所有者名称。
问题是,这是存储区域更改令牌的正确方法还是有更好、更有效的方法?
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, completion
该changesOperation.fetchDatabaseChangesCompletionBlock
方法fetchDatabaseChanges
。
该fetchZoneChanges
方法中有一个operation.recordZoneFetchCompletionBlock
. 在这个块中,我们还需要将令牌的值保存到 UserDefaults。我将它保存到ckZoneToken
用户默认值中的另一个变量中。所以在里面fetchZoneChanges
我得到并保存(从/到UserDefaults)这个ckZoneToken
值,在里面fetchDatabaseChanges
,我得到并保存(从/到UserDefaults)这个ckDatabaseToken
值。
这是正确的技术吗?或者最好只使用两个fetchDatabaseChanges
和fetchZoneChanges
方法中的一个变量来存储CKServerChangeToken
?
哪个是最好的方法?
斯威夫特 3,Xcode 9
ios - 在私有数据库的 ckzone 中查询共享记录不返回任何内容
斯威夫特 4.2 iOS 11.x
我一定错过了一些事情,因为这肯定会起作用。我得到了在自定义区域中查询私有数据库的代码。尽管我在那里有记录,但它什么也没返回。我为所有内容添加了索引!我还更改了权限中的角色,以便任何经过身份验证的用户都可以读取记录。
notificationMedia 是一个全局静态变量,我也用它来保存所说的记录,所以它不会是错误的/不同的。
ios - 我可以在 CloudKit 的生产环境中即时创建 CKRecordZone
我在代码中创建了一个 CKRecordZone,它当然可以在 CloudKit 上进行开发。
但它会在生产中发挥作用吗?我可以在生产中即时创建 CKRecordZones 吗?还是我需要重新考虑设计?
ios - 如何将 CKRecordZone 分配给 CKRecord
我正在尝试创建一个数据库,管理员用户可以在其中创建一个存储为组 CKRecord 类型的组。我希望将此记录放置一个自定义区域,该区域以管理员用户决定的组名命名。如何初始化要分配给该自定义区域的组私有记录(不使用已弃用的函数)。