4

我正在开发一个 CloudKit 支持的应用程序,该应用程序的用户记录类型具有“以下”参考列表属性。我正在尝试构建一个查询以获取关注指定用户的每个用户(即指定用户在以下参考列表中显示为条目的那些用户)。

我目前正在尝试构建我NSPredicateCKQuery

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN following", [[CKReference alloc] initWithRecordID:currentUserID action:CKReferenceActionNone]];
CKQuery *query = [[CKQuery alloc] initWithRecordType:UserRecordType predicate:predicate];

CloudKit 返回以下错误消息:

"Unknown Item" (11/2003); server message = "did not find required record type";

我觉得我的谓词中可能遗漏了一些非常直截了当的东西。任何帮助将不胜感激!

4

2 回答 2

6

使用 CONTAINS 运算符测试列表成员资格:

CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:currentUserID action:CKReferenceActionNone];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"following CONTAINS %@", recordToMatch];

如果要查询超过 1 个引用,则需要对列表中的每个引用使用具有 AND 谓词类型的复合谓词。

于 2014-08-11T16:07:34.453 回答
0

错误 11 表示查询在您的容器中找不到与您的记录类型匹配的任何项目。在您的情况下,Cloud Kit 中不存在 UserRecordType 类型的记录。您可以为该类型创建一个示例模式,然后查询将起作用。

于 2014-11-29T02:35:46.347 回答