Sem categoria

Sincronização com dados principais

Você está desenvolvendo seu aplicativo com uma pilha de Core Data e agora deseja adicionar o componente de nuvem. Solicite que o usuário faça login e salve todos os seus dados na nuvem para disponibilizá-los em todos os seus dispositivos. Ou talvez seja um aplicativo de compartilhamento de conteúdo em que você precisa distribuir dados aos usuários do aplicativo.

De qualquer forma, escrever código de rede consome tempo e é propenso a erros, portanto, você pode recorrer ao CloudKitAnalisar ou Firebase para integrar o componente de nuvem. No caso da CloudKitvocê só pode oferecer suporte a dispositivos iOS e, se optar por Analisar ou Firebase você teria que reescrever todo o código do Core Data.
 
A equipe e a comunidade do Couchbase Mobile têm trabalhado arduamente em um componente conectável para adicionar sincronização ao seu aplicativo sem reescrever seus modelos de dados principais e manter o suporte entre plataformas. Em iOSA classe NSIncrementalStore fornece ganchos para adicionar back-ends conectáveis à sua pilha de Core Data.

Ele se chama CBLIncrementalStore e você pode encontrá-lo na pasta Extra do .zip arquivo para download aqui.

Certifique-se de incluir o CouchbaseLite.framework, bem como essa classe, para usá-lo em seu projeto:

 

 

Como usar o CBLIncrementalSore

O processo de configuração é muito semelhante a como você configuraria uma pilha de Core Data com o suporte de um NSSQLiteStore loja. Então, vamos nos aprofundar.

O objetivo é ter um NSManagedObjectContext que está associada a um coordenador de armazenamento persistente que carrega nosso modelo de objeto gerenciado. E, por fim, adicione um armazenamento persistente do tipo CBLIncrementalStoreType para o coordenador do armazenamento persistente.

 

Você poderia criar uma nova classe chamada Pilha de dados do núcleo para manter a lógica de configuração:

 

Vamos descrever o que está acontecendo passo a passo:

  • Etapa 1: Carregue o modelo que definimos na seção .xcdatamodelmodelId arquivos.
  • Etapa 2: Ligar updateManagedObjectModel: para garantir que o modelo de dados principais seja mapeado para um modelo que o Couchbase Lite entenda.
  • Etapa 3: Inicialize o coordenador do armazenamento persistente como de costume
  • Etapa 4: Configurar o contexto do objeto gerenciado
  • Etapa 5: verificar se o banco de dados Couchbase Lite correspondente existe. Em caso afirmativo, carregamos o banco de dados Banco de dados CBLD como um CBLIncrementalStore tipo de armazenamento. Caso contrário, realizaremos uma migração do armazenamento de dados SQLite anterior para o Couchbase Lite.

 

Adição de sincronização

CBLIncrementalStore tem uma classe banco de dados você pode criar a replicação como de costume com o Couchbase Lite e o Sync Gateway:

Você também pode adicionar autenticação com a opção Autenticador CBLA classe. Veja a documentação sobre réplicas para ver como fazer isso.

 

Entidades de dados principais em JSON

Sempre que uma nova entidade é salva no Core Data, o CBLIncrementalStore adiciona uma chave CBLIS_type no documento JSON correspondente armazenado no Couchbase Lite.

 

Do ponto de vista do Couchbase Lite e do Sync Gateway, é JSON como de costume e não há nada de diferente. Mas ter esse mapeamento em mente é útil porque você também pode usar a API REST para adicionar novos documentos ou exibi-los em uma página da Web.

curl -X POST -H 'Content-Type: application/json' -d '{"CBLIS_type": "Person", "name": "Johnny"}' https://localhost:4984/testdb/

 

Para os mais curiosos: subclasse de NSIncrementalStore

Para entender como o CBLIncrementalStore funciona, devemos seguir a especificação da API: "As subclasses de NSIncrementalStore devem registrar
sua classe com o NSPersistentStoreCoordinator, que então constrói instâncias de armazenamento persistente conforme necessário quando -
addPersistentStoreWithType:configuration:URL:options:error: é chamado". (leia mais em nshipster)

Depois de registrarmos nosso novo armazenamento, alguns métodos serão chamados no CBLIncrementalStore, a saber:

+tipo e +inicialização

O método initialize class é chamado na primeira vez em que a classe é carregada. É aí que o CBLIncrementalStore registra
com o NSPersistentStoreCoordinator. Portanto, quando chamamos addPersistentStoreWithType:configuration:URL:options:error: com o tipo CBLIncrementalStore, ele saberá sobre esse novo tipo de armazenamento.

-loadMetada

Chamado automaticamente pelo NSPersistentStoreCoordinator. Ele criará um banco de dados Couchbase Lite, inicializará as exibições para consultar documentos por tipo e por
e configura os metadados para o armazenamento. Esse método também cria uma consulta em tempo real para conflitos de
documentos.

-executeRequest:withContext:error:

Esse método é chamado para fazer todas as leituras e operações de gravação com uma persistência
backend. 

Se o requestType for NSSaveRequestTypeO CBLIncrementalStore mapeará adequadamente os Core Data
NSManagedObject para o documento do Couchbase Lite se for uma nova entidade criada, uma atualização ou exclusão de objetos. 

Se o requestType for NSFetchRequestTypeo CBLIncrementalStore consultará os documentos e retornará uma matriz de
objetos de acordo com um nome e predicado de entidade de busca.

Isso está de acordo com a forma como as subclasses de NSIncrementalStore devem se inicializar. Você pode ler mais sobre
NSIncrementalStore em nshipster.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por James Nocentini

James Nocentini é o redator técnico responsável pela documentação do Couchbase Mobile. Anteriormente, ele trabalhou como Developer Advocate e, antes disso, como desenvolvedor front-end da HouseTrip. Ele também gosta de escrever tutoriais sobre Android para raywenderlich.com em seu tempo livre.

2 Comentários

  1. Fantástico! Um aplicativo de demonstração que mostrasse exatamente como isso funciona seria muito legal. O problema continua: se você quiser buscar dados diretamente do servidor, terá que fazer isso por outros meios!

    1. James Nocentini março 16, 2015 em 9:33 am

      Se você precisar buscar dados do servidor, poderá usar a API REST para isso. Os resultados da pesquisa são um bom exemplo em que você precisa buscar os documentos diretamente do servidor. Você pode definir uma visualização no console da Web do servidor couchbase, consultar essa visualização por meio do gateway de sincronização e exibir os resultados no dispositivo. Quando o usuário favorita/marca um item, ele pode ser sincronizado com a conta do usuário por meio da função de sincronização.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.