Настройка CKReference не сохраняется - PullRequest
0 голосов
/ 31 октября 2019

В инструментальной панели 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», что, по-моему, означает, что серверная версия записи новее локальной версии. Но я не знаю, что с этим делать, так как я только что очистил / перестроил, удалил приложение, перестроил / переустановил и получил ту же ошибку.

1 Ответ

0 голосов
/ 31 октября 2019

Решение состояло в том, чтобы снова извлечь обе записи, используя их recordID с, затем установить создание CKReference и установить его с помощью повторно выбранных объектов, а затем сохранить повторно выбранныеобъект. Почему это должно быть так сложно, я понятия не имею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...