Когда я хочу, чтобы извлечь запись из частной базы данных он показал мне эту ошибку:CloudKit
Неожиданное RecordId передается CKFetchRecordsOperation: CKReference: 0x7fb691c1c300; 8BBDA567-D00A-4603-91A2-D436677F3952: (_ defaultZone: __ defaultOwner__)
Я не знаю почему. Я взял этот recordID из моей ранее взятой записи со ссылкой на эту запись «владелец». Поэтому я хочу получить этот идентификатор записи из моего ссылочного атрибута.
Является ли что-то, что я делаю неправильно?
Вот мой код для этого:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creationDate > %@", upToDate];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Car" predicate:predicate];
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *privateDB = [container privateCloudDatabase];
[privateDB performQuery:query inZoneWithID:nil completionHandler:^(NSArray*results, NSError*error){
for (CKRecord*carRecord in results) {
CarModel *car = [CarModel new];
CKRecordID *ownerID = [record objectForKey:@"owner"];
[privateDB fetchRecordWithID:ownerID completionHandler:^(CKRecord *record, NSError*error){
// here i expect record with recordID same as recordID in my reference attribute
}
Любопытно, что 8BBDA567-D00A-4603-91A2-D436677F3952 из моего сообщения об ошибке правильно ID, когда я искать его в панели управления.
Есть ли другой способ получить запись «владелец»?
Большое спасибо за помощь. Я всегда старался сделать CKRecord прямо из этой ссылки :) Но у меня все еще есть проблемы, когда у меня есть еще одна выборка в completeHandler и еще одна в этой выборке. Это законно? Он всегда перестает работать после второй выборки, когда начинается метод (in). – Mayo323
Возможно, мне нужно добавить еще один выбор с помощью addOperation? – Mayo323
Хотя вы должны иметь возможность вложенных операций CloudKit, я видел этот вид блокировки раньше. В моем коде, я думаю, я решил это, начав внутреннюю операцию в главной очереди. –