Использование основных данных, iCloud и CloudKit для синхронизации и резервного копирования, и как это работает вместе


Я на ранних этапах создания приложения, где я хотел бы сохранить, синхронизации и резервного копирования данных. Приложение не будет хранить файлы только данные в базе данных. Это будет iOS 8 и выше, поэтому я могу использовать CloudKit. Я провел некоторое исследование и до сих пор не ясно, как основные данные, iCloud и CloudKit работают вместе.

насколько я понимаю, CloudKit-это просто способ получения и извлечения данных в / из облака. Является ли CloudKit просто другим способом синхронизации данных с помощью iCloud?

мои вопросы:

  1. Если я использую CloudKit, мне все еще нужно создать локальную базу данных core data?

    • если да, будет ли он автоматически синхронизироваться с iCloud или мне придется вызывать методы для хранения в обоих местах?
  2. Если данные хранятся только в облаке, пользователь сможет получить к ним доступ, когда устройство iOS не подключено к интернету. Я читал, что CloudKit будет иметь только ограниченный кэширование.

  3. как это будет работать, если учетная запись iCloud не включена.

Если кто-то может сломать то, что каждая технология делает в процессе сохранения и синхронизации базы данных основных данных в автономном режиме и в интернете.

мое текущее понимание такое:

  • основные данные используются для хранения данных локально

  • iCloud синхронизирует данные и сохраняет их в облаке

  • CloudKit дает возможность хранить и управлять данными в облаке??

Я надеюсь, что я предоставил достаточно информации для этого вопроса, чтобы не закрываться.

1 100

1 ответ:

это так:

  • Core Data сама по себе является полностью локальной и не работает автоматически ни с одним из облачных сервисов Apple.
  • Основные Данные С включенным iCloud включает синхронизацию через iCloud. Любые изменения, сохраненные в основных данных, передаются в облако, а все изменения, внесенные в облако, автоматически загружаются. Данные хранятся как в iCloud, так и в локальном файле постоянного хранилища, поэтому они доступны даже при наличии устройства не в сети. Вам не нужно писать какой-либо облачный код, вам просто нужно добавить прослушивание входящих изменений (что очень похоже на изменения, сделанные в другом контексте управляемого объекта).
  • CloudKit не связан с основными данными. Это не система синхронизации, это система передачи. Это означает, что каждый раз, когда вы хотите читать/писать облачные данные, вам нужно сделать явные вызовы CloudKit API для этого. Ничего не происходит автоматически. CloudKit не хранит данные на устройстве, поэтому данные не являются доступна, если устройство находится в автономном режиме. CloudKit также добавляет некоторые функции, недоступные для основных данных с iCloud - например, общедоступные общие данные и возможность загружать только часть набора данных вместо всего этого.

Если вы хотите использовать CloudKit с основными данными, вам придется написать свой собственный код для перевода между управляемыми объектами и CloudKit записи. Это не невозможно, но это больше кода писать. Это может быть более надежным, но это слишком скоро скажу точно.

я писал блоге описание CloudKit с точки зрения тех, кто использовал основные данные и iCloud в прошлом.

обновление, июнь 2016: по состоянию на самая последняя документация для NSPersistentStoreCoordinator, все, что связано с основными данными с iCloud, помечено как устаревшее. В результате этого, вероятно, следует избегать новых разработок.