我正在使用iOS应用程序实现cloudkit,但我需要查询ID大于数字的所有记录。例如,我有ID为23的记录:

下面是我的代码:
CKContainer *myContainer = [CKContainer containerWithIdentifier:containerID];
CKDatabase *publicDatabase = [myContainer publicCloudDatabase];
CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:@"23"];
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:recordID action:CKReferenceActionNone];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordID >= %@", recordToMatch];
CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType predicate:predicate];
[publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
if (error) {
NSLog(@"error: %@", error.localizedDescription);
}
else {
}
}];但是我得到了以下错误:
错误:错误:操作无法完成。(CKErrorDomain错误%1。)
你们中有谁知道如何设置我的NSPredicate,使我可以获得ID大于23的所有记录?
我将非常感谢你的帮助。
发布于 2015-05-31 16:51:22
对于这样的查询,您可以使用如下谓词:
在Swift中:
var predicate = NSPredicate(format: "recordID >= %@", CKRecordID(recordName: "23"))在目标C中:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordID >= %@", [CKRecordID initWithRecordName:@"23"]];然后,我确实假设您最初在指定这个数字时创建了CKRecords对象。否则,CloudKit将分配recordID值并将其作为GUID。
发布于 2015-12-08 17:14:08
23的recordID被存储为CKRecordID类型,而不是number类型,因此不能使用任何数值谓词,比如greater-than。您应该在记录中创建一个新的number字段来存储您的整数ID,并对其进行查询。
https://stackoverflow.com/questions/30553772
复制相似问题