Я нахожусь на ранней стадии создания приложения, в котором я хотел бы сохранять, синхронизировать и создавать резервные копии данных. Приложение не будет хранить файлы, только данные в базе данных. Это будет iOS 8 и выше, поэтому я могу использовать CloudKit. Я провел небольшое исследование и до сих пор не понимаю, как Core Data, iCloud и CloudKit работают вместе.
Насколько я понимаю, CloudKit - это всего лишь способ получения и извлечения данных в / из облака. CloudKit - это просто другой способ синхронизации данных с iCloud?
Мои вопросы:
Если я использую CloudKit, нужно ли мне создавать локальную базу данных ядра?
- Если да, будет ли он автоматически синхронизирован с iCloud или мне придется вызывать методы для хранения в обоих местах?
Если данные хранятся только в облаке, пользователь сможет получить к ним доступ, когда устройство iOS не подключено к Интернету. Я читал, что CloudKit будет иметь только ограниченное кеширование.
- Как это будет работать, если учетная запись iCloud не включена.
Если кто-то может разбить, что делает каждая технология в процессе сохранения и синхронизации основной базы данных в автономном и интерактивном режиме.
Мое текущее понимание:
Core Data используется для локального хранения данных
iCloud синхронизирует данные и сохраняет в облаке
CloudKit дает возможность хранить и управлять данными в облаке ??
Надеюсь, я предоставил достаточно информации, чтобы этот вопрос не закрылся.
Ответы:
Это вот так:
Если вы хотите использовать CloudKit с Core Data, вам придется написать собственный код для перевода между управляемыми объектами и записями CloudKit. Это не невозможно, но нужно написать больше кода. Это может быть более надежным , но это слишком рано , чтобы сказать наверняка.
Я написал сообщение в блоге, в котором описал CloudKit с точки зрения человека, который в прошлом использовал Core Data и iCloud.
Обновление , июнь 2016 г .: В последней документации
NSPersistentStoreCoordinator
все, что связано с Core Data с iCloud, помечено как устаревшее. В результате этого, вероятно, следует избегать для новых разработок.источник
В iOS 13 Apple анонсировала новые функции в Core Data для лучшей работы с CloudKit. Главное дополнение - это NSPersistentCloudKitContainer, который в основном управляет синхронизацией между Core Data и CloudKit за вас.
Вы можете узнать больше в сеансе WWDC Использование основных данных с CloudKit .
Apple также выпустила отличную коллекцию документов для этого самого использования: зеркалирование хранилища основных данных с помощью CloudKit .
источник