我想查询当前用户创建的所有记录。我可以成功获取当前用户的 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
}];
}];
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在数据库中创建了几条“MyEntity”记录。
如果您在 CloudKit 仪表板中查看您的记录类型并打开下拉“元数据索引字段”,那么您会发现这些字段都不可搜索。直到昨天他们还是这样。今天早上我注意到了这一点,因为我无法再使用以下方法对creationDate进行排序:
[NSSortDescriptor(key: "creationDate", ascending: false)]
Run Code Online (Sandbox Code Playgroud)
我希望这是一个临时的 CloudKit 问题,很快就会得到解决。否则,您必须通过自己添加这些字段来创建解决方法。除此之外,我预计会出现 CloudKit 错误而不是 0 条记录。
更新:我刚刚注意到可以再次将字段设置为可排序和可查询。我刚刚尝试过这个并且有效。我在演示中添加了对 CreatorUserRecordID 的查询。问题是,只有设置后的新记录才会被返回。旧记录不会显示。如果您想查看演示,请查看:https://github.com/evermeer/EVCloudKitDao
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |