Estou nos estágios iniciais de criação de um aplicativo onde gostaria de salvar, sincronizar e fazer backup dos dados. O aplicativo não armazenará arquivos, apenas dados em um banco de dados. Será iOS 8 e superior, então posso usar o CloudKit. Eu fiz algumas pesquisas e ainda não tenho certeza de como Core Data, iCloud e CloudKit funcionam juntos.
Pelo que entendemos, o CloudKit é apenas uma maneira de obter e recuperar dados de / para a nuvem. O CloudKit é apenas uma maneira diferente de sincronizar dados com o iCloud?
Minhas perguntas são:
Se eu usar o CloudKit, ainda preciso criar um banco de dados de dados de núcleo local?
- Se sim, ele será sincronizado automaticamente com o iCloud ou terei que chamar métodos para armazenar em ambos os locais?
Se os dados estiverem armazenados apenas na nuvem, o usuário poderá acessá-los quando o dispositivo iOS não estiver conectado à internet. Eu li que o CloudKit terá apenas cache limitado.
- Como isso funcionará se a conta iCloud não estiver habilitada.
Se alguém puder quebrar o que cada tecnologia faz no processo de salvar e sincronizar o banco de dados principal offline e online.
Meu entendimento atual é:
Core Data é usado para armazenar dados localmente
iCloud sincroniza os dados e armazena na nuvem
CloudKit dá a capacidade de armazenar e gerenciar dados na nuvem ??
Espero ter fornecido informações suficientes para que esta questão não seja encerrada.
Respostas:
É tipo isso:
Se você quiser usar CloudKit com Core Data, terá que escrever seu próprio código personalizado para traduzir entre objetos gerenciados e registros CloudKit. Não é impossível, mas é mais código para escrever. Ele pode ser mais confiável, mas é muito cedo para dizer com certeza.
Eu escrevi uma postagem no blog descrevendo o CloudKit da perspectiva de alguém que usou Core Data e iCloud no passado.
Atualização , junho de 2016: conforme a documentação mais recente do
NSPersistentStoreCoordinator
, tudo relacionado a Core Data com iCloud está marcado como obsoleto. Como resultado, provavelmente deve ser evitado para novos desenvolvimentos.fonte
Com o iOS 13, a Apple anunciou novos recursos no Core Data para trabalhar melhor com o CloudKit. A principal adição é NSPersistentCloudKitContainer que basicamente gerencia a sincronização entre Core Data e CloudKit para você.
Você pode aprender mais na sessão WWDC Using Core Data with CloudKit .
A Apple também lançou uma boa coleção de documentos para este uso: Espelhando um armazenamento de dados principais com CloudKit .
fonte