CloudKit: CKQuery показывает ошибку: ошибка: операция не может быть завершена. (CKErrorDomain ошибка 1.)

Я работаю над приложением iOS, реализующим cloudkit, но мне нужно запросить все записи с идентификатором, превышающим число. Например, у меня есть запись с идентификатором 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 таким образом, чтобы я мог получить все записи с идентификатором больше 23?

Я очень ценю вашу помощь.

2 ответа

Для такого запроса вы можете использовать такой предикат, как:

в Свифте:

var predicate = NSPredicate(format: "recordID >= %@", CKRecordID(recordName: "23"))

В Задаче C:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordID >= %@", [CKRecordID initWithRecordName:@"23"]];

Затем я предполагаю, что вы изначально создали объект CKRecords, указав этот номер. В противном случае значения recordID будут назначаться CloudKit и будут GUID.

Ваш идентификатор записи 23 хранится как тип CKRecordID, а не как число, поэтому вы не можете использовать любые числовые предикаты, например, больше, чем. Вы должны создать новое числовое поле в своей записи для хранения ваших целочисленных идентификаторов и запросить его.

Другие вопросы по тегам