Мне удалось заставить мое существующее приложение для работы с основными данными работать с iCloud. После нескольких дней изучения это оказалось на самом деле на удивление просто.Кажется, что важны 3 вещи:
для добавления файла прав (в недавнем Xcode это можно сделать, выбрав цель, выбрав «Панель сводки», прокрутите вниз, отметьте включение прав »
, чтобы добавить правильные параметры при добавлении постоянного хранилища, в моем случае
NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:
// другие варианты
@ "<произвольное имя>", NSPersistentStoreUbiquitousContentNameKey,
iCloudURL, NSPersistentStoreUbiquitousContentURLKey,
ноль]
где
NSURL * iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier: nil];
Здесь `nil 'указывает, что используется информация из файла Entitlements.plist.
На самом деле, на данный момент я не уверен, что этот последний шаг имеет решающее значение для разработки - я включил другое приложение без этого последнего шага, и, похоже, оно работает.
Как бы то ни было, я заметил, что две существующие базовые базы данных одного и того же приложения на разных iDevices будут синхронизировать новые записи с основным стеком данных, но не будут автоматически синхронизировать существующие записи.
Одним из способов синхронизации данных с устройства A на B является удаление существующей базы данных основных данных на B, а затем перезапуск приложения на B. Однако это неправильное слияние.
Кто-нибудь знает способ объединить две существующие базы данных основных данных в разных приложениях на момент обновления приложений для использования поддержки iCloud, то есть использовать указанные выше параметры и все такое?
Спасибо