4

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

4

1 回答 1

3

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

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

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

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

于 2014-07-23T10:51:49.710 回答