繁体   English   中英

如何在CloudKit中按用户查询?

[英]How to query by user in 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”记录。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM