В инструментальной панели CloudKit тип записи User
имеет поле с именем Boards
типа Reference (List)
, а тип записи Board
имеет поле с именем User
типа Reference
. Это пример кода, показывающий, как я пытаюсь связать Board
с User
:
CKReference *reference = [[CKReference alloc] initWithRecord:userRecord action:CKReferenceActionDeleteSelf];
[boardRecord setObject:reference forKey:@"User"];
Если я NSLog(@"%@", [boardRecord objectForKey:@"User"]);
до и после установки объекта, я получаю результат (null)
до и после него это CKReference
объект с тем же recordName
, что и User
. Но в инструментальной панели CloudKit Board
не обновляет свое поле User
, а User
не имеет ссылки, добавленной в список ссылок Boards
, поэтому, когда я впоследствии запрашиваю User
для связанного Board
s Я не получаю никаких результатов. Я не могу понять, почему ссылка правильно установлена в соответствии с тем, что зарегистрировано, но на самом деле не сохраняется.
Вот код, используемый для сохранения в iCloud:
+ (void)saveEntity:(CloudKitEntity *)entity completion:(void (^)(NSError * _Nonnull))completion {
[[self privateDatabase] saveRecord:entity.record completionHandler:^(CKRecord * _Nullable record, NSError * _Nullable error) {
if (completion) {
completion(error);
}
}];
}
Регистрация ошибкиобнаружил ошибку «Server Record Changed», что, по-моему, означает, что серверная версия записи новее локальной версии. Но я не знаю, что с этим делать, так как я только что очистил / перестроил, удалил приложение, перестроил / переустановил и получил ту же ошибку.