Подтвердить что ты не робот

Основные данные iCloud слияние протокола

Мне удалось заставить мое существующее приложение для работы с данными работать с iCloud. После нескольких дней учебы это было на самом деле удивительно просто. Кажется, что важно 3 вещи:

  • чтобы добавить файл прав (в последнем Xcode это можно сделать с помощью выбора цели, выбрать "Сводная панель", прокрутить вниз, проверить права доступа "

  • чтобы добавить правильные параметры при добавлении хранилища persisten, в моем случае

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
        // other options
        @"<arbitrary name>", NSPersistentStoreUbiquitousContentNameKey,
        iCloudURL, NSPersistentStoreUbiquitousContentURLKey,
        nil]
    

    где

    NSURL * iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
    

"nil" здесь указывает, что используется информация из файла Entitlements.plist.

  • поддержка iCloud для приложения через портал разработчиков. Это может привести к созданию уникального идентификатора приложения, чего я раньше не делал.

На самом деле, на данный момент я не уверен, что этот последний шаг имеет решающее значение для разработки. Я включил другое приложение без этого последнего шага и, похоже, работает.

Во всяком случае, я заметил, что две существующие базовые базы данных одного и того же приложения на разных iDevices будут синхронизировать новые записи с базовым стеком данных, но не будут автоматически синхронизировать существующие записи.

Одним из способов синхронизации данных с устройства A на B является удаление существующей базы данных основных данных на B, а затем перезапуск приложения на B. Однако это не является правильным слиянием.

Кто-нибудь знает способ слияния двух существующих базовых баз данных данных в разных приложениях в момент обновления приложений для поддержки iCloud, т.е. использовать параметры выше и все такое?

Спасибо

4b9b3361

Ответ 2

Я этого не делал, но при сохранении в iCloud существует высокий риск возникновения противоречивой информации, если данные также были обновлены или существуют на другом устройстве. Если конфликты не решены должным образом, поток между двумя устройствами не будет происходить должным образом. Разрешение конфликтов может быть сложным, но самым простым было бы просто дать самую последнюю победу. У Apple есть процедуры обработки конфликтов, которые запускаются при сохранении, чтобы перезаписать в вездесущий магазин, идентифицирует конфликт.