Мне удалось заставить мое существующее приложение для работы с данными работать с 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, т.е. использовать параметры выше и все такое?
Спасибо