我可以从 CloudKit 接收对应于 CKQuery 的记录计数吗?

Posted

技术标签:

【中文标题】我可以从 CloudKit 接收对应于 CKQuery 的记录计数吗?【英文标题】:Can I receive count of records corresponding to CKQuery from CloudKit? 【发布时间】:2014-10-31 08:20:22 【问题描述】:

我尝试为此使用 CKQueryOperation:

CKQueryOperation *o = [[CKQueryOperation alloc] initWithQuery:query];
[o setDesiredKeys:@[]];

但它仍然返回了很多我现在不需要的数据

<CKRecord: 0x79881a50; recordType=Comment, recordID=CBB7B269-47AH-406E-8934-682D31501778:(_defaultZone:__defaultOwner__), recordChangeTag=i1x8j1ey, values=
>

    creatorUserRecordID -> <CKRecordID: 0x7966e9d0; _e5b178bde573ba6fee336b9ed8:(_defaultZone:__defaultOwner__)>
    lastModifiedUserRecordID -> <CKRecordID: 0x7966cdd0; _e5b178bd3e9e7a6e336b9f34ed8:(_defaultZone:__defaultOwner__)>
    creationDate -> 2014-10-31 07:20:45 +0000
    modificationDate -> 2014-10-31 07:20:45 +0000
    modifiedByDevice -> iPhone Simulator

我只需要记录计数。

【问题讨论】:

这个问题已经在:***.com/questions/24191999/cloudkit-count-records @EdwinVermeer,我不想设置限制,我想知道记录是多少。 在 CloudKit 中不能进行聚合查询。所以你必须查询所有记录并计算它们。那里关于设置限制的评论是为了表明您可以控制云套件返回的记录数量。因为如果您查询 cloudkit,Apple 将决定它将返回多少条记录。当您进行查询时,可能不会返回所有记录。 queryCompletionBlock 返回一个游标。您必须从该光标开始继续阅读。 @EdwinVermeer 所以,我明白了。你能告诉我你将如何解决这个问题吗:有几十个事件,我想为每个事件找到 cmets 的数量。未来未读的 cmets 数量也是如此。根据 Apple 的建议,参考是向后的:从评论到事件。你能写一个答案,这样我就可以结束这个问题了吗? 【参考方案1】:

在 CloudKit 中不能进行聚合查询。所以你必须查询所有记录并计算它们。为确保返回所有记录,您必须将 operation.resultsLimit 设置为大于计数的值,否则可能会发生并非所有记录都返回的情况。

【讨论】:

以上是关于我可以从 CloudKit 接收对应于 CKQuery 的记录计数吗?的主要内容,如果未能解决你的问题,请参考以下文章

注册以接收远程 CloudKit 更改的通知不起作用

类似于 CloudKit 的多平台 MBaas?

私有数据库和订阅的 Cloudkit 问题?

有没有办法从 CloudKit 迁移数据?

CloudKit 分享

CloudKit 获取用户 iTunes 备份