使用 CKQueryOperation 和 CKReference 获取大集合
Posted
技术标签:
【中文标题】使用 CKQueryOperation 和 CKReference 获取大集合【英文标题】:Fetch large set using CKQueryOperation and CKReference 【发布时间】:2018-06-17 13:23:42 【问题描述】:我有一个 CKReference 附加到链接到一个 CKRecord 的 4000 条记录。他们没有任何动作 (CKReferenceActionNone)。 我希望能够使用 NSPredicate 的 CKQueryOperation 来获取所有这些记录,如下所示:
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:backupRecord.recordID action:CKReferenceActionNone]; NSPredicate* predicate = [NSPredicate predicateWithFormat:@"parentRecord == %@", recordToMatch];
通常当我使用 CKQueryOperation 时,我可以使用 CKQueryCursor 循环它以获取超过 100 条记录。但是使用 CKReference,它首先工作 100,然后工作 200,但之后没有返回游标。
有没有办法使用 CKReference 获取 4000 条记录?
非常感谢!
【问题讨论】:
【参考方案1】:我不确定这是否是您的光标问题的确切原因,但每条记录限制为 750 个引用。
任何一条记录可以拥有的引用数量有一个硬性限制。此限制设置为 750 个引用。任何超过此限制的尝试都将导致服务器出错。
您可以在此处查看记录:https://developer.apple.com/documentation/cloudkit/ckrecord/reference
【讨论】:
这里不应该有影响。对于 CKReferenceActionNone,这个限制不应该适用。我已经成功测试了数千条引用记录。 我还成功添加了数千条引用记录。但是由于我也在使用 CKShare,因此无法获取它们。所以获取记录的用户实际上是通过 CKShare -> CKReference 获取另一个用户的私有区域。以上是关于使用 CKQueryOperation 和 CKReference 获取大集合的主要内容,如果未能解决你的问题,请参考以下文章
Pkcs11 ECDSA 签名返回 CKR_DATA_INVALID
CKQueryOperation resultLimit max 和 request count
CloudKit:删除记录的 CKQueryOperation
sun.security.pkcs11.wrapper.PKCS11Exception:CKR_ATTRIBUTE_TYPE_INVALID