Ios 如何在CloudKit中按用户查询?

Ios 如何在CloudKit中按用户查询?,ios,cloudkit,Ios,Cloudkit,我想查询当前用户创建的所有记录。我可以成功地获取当前用户的CKRecordID,但我似乎无法正确地使用它进行查询。下面是我正在使用的代码。我做错了什么 [[CKContainer defaultContainer] fetchUserRecordIDWithCompletionHandler:^(CKRecordID *recordID, NSError *error) { NSPredicate *predicate = [NSPredicate predicateWithForma

我想查询当前用户创建的所有记录。我可以成功地获取当前用户的CKRecordID,但我似乎无法正确地使用它进行查询。下面是我正在使用的代码。我做错了什么

[[CKContainer defaultContainer] fetchUserRecordIDWithCompletionHandler:^(CKRecordID *recordID, NSError *error) {
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creatorUserRecordID = %@", recordID];
     CKQuery *query = [[CKQuery alloc] initWithRecordType:@"MyEntity" predicate: predicate];
     [database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
           //results are empty       
      }];
}];

顺便说一句,我在数据库中创建了几个“MyEntity”记录。

如果您在CloudKit仪表板中查看您的记录类型并打开下拉列表“元数据索引字段”,那么您会发现这些字段都不可搜索。直到昨天他们还在。今天早上我注意到了这一点,因为我无法再使用以下方法对creationDate进行排序:

[NSSortDescriptor(key: "creationDate", ascending: false)]
我希望这是一个暂时的CloudKit问题,很快就会得到解决。 否则,您必须通过自己添加这些字段来创建解决方案。除此之外,我还希望出现CloudKit错误,而不是0条记录

更新:我刚刚注意到可以再次将字段设置为可排序和可查询。我刚试过这个,效果很好。我在演示中添加了对creatorUserRecordID的查询。问题是,只会返回设置后的新记录。旧唱片不会出现。如果您想观看演示,请查看: