Использование основных данных, iCloud и CloudKit для синхронизации и резервного копирования, и как это работает вместе
Я на ранних этапах создания приложения, где я хотел бы сохранить, синхронизации и резервного копирования данных. Приложение не будет хранить файлы только данные в базе данных. Это будет iOS 8 и выше, поэтому я могу использовать CloudKit. Я провел некоторое исследование и до сих пор не ясно, как основные данные, iCloud и CloudKit работают вместе.
насколько я понимаю, CloudKit-это просто способ получения и извлечения данных в / из облака. Является ли CloudKit просто другим способом синхронизации данных с помощью iCloud?
мои вопросы:
-
Если я использую CloudKit, мне все еще нужно создать локальную базу данных core data?
- если да, будет ли он автоматически синхронизироваться с iCloud или мне придется вызывать методы для хранения в обоих местах?
Если данные хранятся только в облаке, пользователь сможет получить к ним доступ, когда устройство iOS не подключено к интернету. Я читал, что CloudKit будет иметь только ограниченный кэширование.
- как это будет работать, если учетная запись iCloud не включена.
Если кто-то может сломать то, что каждая технология делает в процессе сохранения и синхронизации базы данных основных данных в автономном режиме и в интернете.
мое текущее понимание такое:
основные данные используются для хранения данных локально
iCloud синхронизирует данные и сохраняет их в облаке
CloudKit дает возможность хранить и управлять данными в облаке??
Я надеюсь, что я предоставил достаточно информации для этого вопроса, чтобы не закрываться.
1 ответ:
это так:
- Core Data сама по себе является полностью локальной и не работает автоматически ни с одним из облачных сервисов Apple.
- Основные Данные С включенным iCloud включает синхронизацию через iCloud. Любые изменения, сохраненные в основных данных, передаются в облако, а все изменения, внесенные в облако, автоматически загружаются. Данные хранятся как в iCloud, так и в локальном файле постоянного хранилища, поэтому они доступны даже при наличии устройства не в сети. Вам не нужно писать какой-либо облачный код, вам просто нужно добавить прослушивание входящих изменений (что очень похоже на изменения, сделанные в другом контексте управляемого объекта).
- CloudKit не связан с основными данными. Это не система синхронизации, это система передачи. Это означает, что каждый раз, когда вы хотите читать/писать облачные данные, вам нужно сделать явные вызовы CloudKit API для этого. Ничего не происходит автоматически. CloudKit не хранит данные на устройстве, поэтому данные не являются доступна, если устройство находится в автономном режиме. CloudKit также добавляет некоторые функции, недоступные для основных данных с iCloud - например, общедоступные общие данные и возможность загружать только часть набора данных вместо всего этого.
Если вы хотите использовать CloudKit с основными данными, вам придется написать свой собственный код для перевода между управляемыми объектами и CloudKit записи. Это не невозможно, но это больше кода писать. Это может быть более надежным, но это слишком скоро скажу точно.
я писал блоге описание CloudKit с точки зрения тех, кто использовал основные данные и iCloud в прошлом.
обновление, июнь 2016: по состоянию на самая последняя документация для
NSPersistentStoreCoordinator
, все, что связано с основными данными с iCloud, помечено как устаревшее. В результате этого, вероятно, следует избегать новых разработок.