首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CloudKit : CKQuery显示错误:错误:操作无法完成。(CKErrorDomain错误%1。)

CloudKit : CKQuery显示错误:错误:操作无法完成。(CKErrorDomain错误%1。)
EN

Stack Overflow用户
提问于 2015-05-31 12:14:05
回答 2查看 920关注 0票数 1

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

下面是我的代码:

代码语言:javascript
运行
复制
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的所有记录?

我将非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-05-31 16:51:22

对于这样的查询,您可以使用如下谓词:

在Swift中:

代码语言:javascript
运行
复制
var predicate = NSPredicate(format: "recordID >= %@", CKRecordID(recordName: "23"))

在目标C中:

代码语言:javascript
运行
复制
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordID >= %@", [CKRecordID initWithRecordName:@"23"]];

然后,我确实假设您最初在指定这个数字时创建了CKRecords对象。否则,CloudKit将分配recordID值并将其作为GUID。

票数 1
EN

Stack Overflow用户

发布于 2015-12-08 17:14:08

23的recordID被存储为CKRecordID类型,而不是number类型,因此不能使用任何数值谓词,比如greater-than。您应该在记录中创建一个新的number字段来存储您的整数ID,并对其进行查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30553772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档