如何在CloudKit中按用户查询?

时间:2014-07-22 14:25:29

标签: ios cloudkit

我想查询当前用户创建的所有记录。我可以成功获取当前用户的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”记录。

1 个答案:

答案 0 :(得分:3)

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

[NSSortDescriptor(key: "creationDate", ascending: false)]

我希望这是一个临时的CloudKit问题,很快就会解决。 否则,您必须自己添加这些字段来创建变通方法。除此之外,我希望CloudKit错误而不是0条记录。

更新:我刚刚注意到可以再次设置可排序和可查询的字段。我刚试过这个并且它有效。我在我的演示中添加了creatorUserRecordID的查询。问题是只返回自设置以来的新记录。旧记录不会显示。如果您想查看演示,请查看:https://github.com/evermeer/EVCloudKitDao