Ios CloudKit-用于查找引用列表中包含指定CKReference的所有记录的NSPredicate

Ios CloudKit-用于查找引用列表中包含指定CKReference的所有记录的NSPredicate,ios,nspredicate,cloudkit,Ios,Nspredicate,Cloudkit,我正在开发一个由CloudKit支持的应用程序,其用户记录类型具有“following”引用列表属性。我正在尝试构造一个查询,以获取跟随指定用户的每个用户(即,其中指定用户作为条目出现在以下引用列表中的那些用户) 我目前正在尝试为CKQuery构建我的NSPredicate,如下所示: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN following", [[CKReference alloc] initWit

我正在开发一个由CloudKit支持的应用程序,其用户记录类型具有“following”引用列表属性。我正在尝试构造一个查询,以获取跟随指定用户的每个用户(即,其中指定用户作为条目出现在以下引用列表中的那些用户)

我目前正在尝试为
CKQuery
构建我的
NSPredicate
,如下所示:

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";

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

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

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

如果要查询多个引用,则需要对列表中的每个引用使用带和谓词类型的复合谓词。

错误11表示查询无法在容器中找到与记录类型匹配的任何项。在您的情况下,云工具包中不存在UserRecordType记录。您可以为该类型创建一个示例架构,然后查询将工作。

这将不起作用,因为
后面的
字段是一个引用列表,而不是一个引用。我知道,在这种情况下,我已经更新了引用列表的答案。因此,这正是我需要的,这非常有效。谢谢我很好奇你怎么能查询用户记录?据我所知,这是被禁止的。它确实存在于CloudKit中。看一下标记为正确的答案。好的,谢谢。我得到了错误11,我的原因是记录不存在。