{"id":1891,"date":"2017-01-03T00:27:06","date_gmt":"2017-01-03T00:27:05","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1891"},"modified":"2023-06-22T06:15:02","modified_gmt":"2023-06-22T13:15:02","slug":"syncing-with-core-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/syncing-with-core-data\/","title":{"rendered":"Sincroniza\u00e7\u00e3o com dados principais"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 desenvolvendo seu aplicativo com uma pilha de Core Data e agora deseja adicionar o componente de nuvem. Solicite que o usu\u00e1rio fa\u00e7a login e salve todos os seus dados na nuvem para disponibiliz\u00e1-los em todos os seus dispositivos. Ou talvez seja um aplicativo de compartilhamento de conte\u00fado em que voc\u00ea precisa distribuir dados aos usu\u00e1rios do aplicativo.<\/p>\n<p>De qualquer forma, escrever c\u00f3digo de rede consome tempo e \u00e9 propenso a erros, portanto, voc\u00ea pode recorrer ao\u00a0<strong>CloudKit<\/strong>,\u00a0<strong>Analisar<\/strong>\u00a0ou\u00a0<strong>Firebase<\/strong>\u00a0para integrar o componente de nuvem. No caso da\u00a0<strong>CloudKit<\/strong>voc\u00ea s\u00f3 pode oferecer suporte a dispositivos iOS e, se optar por\u00a0<strong>Analisar<\/strong>\u00a0ou\u00a0<strong>Firebase<\/strong>\u00a0voc\u00ea teria que reescrever todo o c\u00f3digo do Core Data.<br \/>\n\u00a0<br \/>\nA equipe e a comunidade do Couchbase Mobile t\u00eam trabalhado arduamente em um componente conect\u00e1vel para adicionar sincroniza\u00e7\u00e3o ao seu aplicativo sem reescrever seus modelos de dados principais e manter o suporte entre plataformas. Em\u00a0<strong>iOS<\/strong>A classe NSIncrementalStore fornece ganchos para adicionar back-ends conect\u00e1veis \u00e0 sua pilha de Core Data.<\/p>\n<p>Ele se chama CBLIncrementalStore e voc\u00ea pode encontr\u00e1-lo na pasta Extra do\u00a0<strong>.zip<\/strong>\u00a0arquivo para download\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/nosql-databases\/downloads\/\">aqui<\/a>.<\/p>\n<p>Certifique-se de incluir o CouchbaseLite.framework, bem como essa classe, para us\u00e1-lo em seu projeto:<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\"><img decoding=\"async\" src=\"https:\/\/cl.ly\/Zu2G\/Screen%20Shot%202015-02-24%20at%2012.21.05.png\" style=\"margin-right: auto;margin-left: auto\" width=\"50%\" \/><\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<h1>Como usar o CBLIncrementalSore<\/h1>\n<p>O processo de configura\u00e7\u00e3o \u00e9 muito semelhante a como voc\u00ea configuraria uma pilha de Core Data com o suporte de um\u00a0<strong>NSSQLiteStore<\/strong>\u00a0loja. Ent\u00e3o, vamos nos aprofundar.<\/p>\n<p>O objetivo \u00e9 ter um\u00a0<strong>NSManagedObjectContext<\/strong>\u00a0que est\u00e1 associada a um coordenador de armazenamento persistente que carrega nosso modelo de objeto gerenciado. E, por fim, adicione um armazenamento persistente do tipo\u00a0<strong>CBLIncrementalStoreType<\/strong>\u00a0para o coordenador do armazenamento persistente.<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/slide1.jpg\" alt=\"\" style=\"margin: 0 auto\" \/><\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Voc\u00ea poderia criar uma nova classe chamada\u00a0<strong>Pilha de dados do n\u00facleo<\/strong>\u00a0para manter a l\u00f3gica de configura\u00e7\u00e3o:<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Vamos descrever o que est\u00e1 acontecendo passo a passo:<\/p>\n<ul>\n<li style=\"line-height: 20.7999992370605px;text-align: left\">Etapa 1: Carregue o modelo que definimos na se\u00e7\u00e3o\u00a0<strong>.xcdatamodelmodelId<\/strong>\u00a0arquivos.<\/li>\n<li style=\"line-height: 20.7999992370605px;text-align: left\">Etapa 2: Ligar\u00a0<strong>updateManagedObjectModel:<\/strong>\u00a0para garantir que o modelo de dados principais seja mapeado para um modelo que o Couchbase Lite entenda.<\/li>\n<li style=\"line-height: 20.7999992370605px;text-align: left\">Etapa 3: Inicialize o coordenador do armazenamento persistente como de costume<\/li>\n<li style=\"line-height: 20.7999992370605px;text-align: left\">Etapa 4: Configurar o contexto do objeto gerenciado<\/li>\n<li style=\"line-height: 20.7999992370605px;text-align: left\">Etapa 5: verificar se o banco de dados Couchbase Lite correspondente existe. Em caso afirmativo, carregamos o banco de dados\u00a0<strong>Banco de dados CBLD<\/strong>\u00a0como um\u00a0<strong>CBLIncrementalStore<\/strong>\u00a0tipo de armazenamento. Caso contr\u00e1rio, realizaremos uma migra\u00e7\u00e3o do armazenamento de dados SQLite anterior para o Couchbase Lite.<\/li>\n<\/ul>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<h1 style=\"text-align: left\">Adi\u00e7\u00e3o de sincroniza\u00e7\u00e3o<\/h1>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">O\u00a0<strong>CBLIncrementalStore<\/strong>\u00a0tem uma classe\u00a0<strong>banco de dados<\/strong>\u00a0voc\u00ea pode criar a replica\u00e7\u00e3o como de costume com o Couchbase Lite e o Sync Gateway:<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Voc\u00ea tamb\u00e9m pode adicionar autentica\u00e7\u00e3o com a op\u00e7\u00e3o\u00a0<strong>Autenticador CBLA<\/strong>\u00a0classe. Veja a\u00a0<a href=\"https:\/\/developer.couchbase.com\/mobile\/develop\/guides\/couchbase-lite\/native-api\/replication\/index.html\">documenta\u00e7\u00e3o sobre r\u00e9plicas<\/a>\u00a0para ver como fazer isso.<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<h1 style=\"text-align: left\">Entidades de dados principais em JSON<\/h1>\n<p>Sempre que uma nova entidade \u00e9 salva no Core Data, o CBLIncrementalStore adiciona uma chave CBLIS_type no documento JSON correspondente armazenado no Couchbase Lite.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cl.ly\/ZuiR\/CoreData-CBL.png\" style=\"margin: 0 auto\" \/><\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Do ponto de vista do Couchbase Lite e do Sync Gateway, \u00e9 JSON como de costume e n\u00e3o h\u00e1 nada de diferente. Mas ter esse mapeamento em mente \u00e9 \u00fatil porque voc\u00ea tamb\u00e9m pode usar a API REST para adicionar novos documentos ou exibi-los em uma p\u00e1gina da Web.<\/p>\n<p><code>curl -X POST -H &apos;Content-Type: application\/json&apos; -d &apos;{\"CBLIS_type\": \"Person\", \"name\": \"Johnny\"}&apos; https:\/\/localhost:4984\/testdb\/<\/code><\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\u00a0<\/p>\n<h1 style=\"text-align: left\">Para os mais curiosos: subclasse de NSIncrementalStore<\/h1>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Para entender como o CBLIncrementalStore funciona, devemos seguir a especifica\u00e7\u00e3o da API: \"As subclasses de NSIncrementalStore devem registrar<br \/>\nsua classe com o NSPersistentStoreCoordinator, que ent\u00e3o constr\u00f3i inst\u00e2ncias de armazenamento persistente conforme necess\u00e1rio quando -<br \/>\n<strong>addPersistentStoreWithType:configuration:URL:options:error:<\/strong>\u00a0\u00e9 chamado\". (leia mais em <a href=\"https:\/\/nshipster.com\/nsincrementalstore\/\">nshipster<\/a>)<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Depois de registrarmos nosso novo armazenamento, alguns m\u00e9todos ser\u00e3o chamados no CBLIncrementalStore, a saber:<\/p>\n<h3 style=\"font-size: 13px;text-align: left\"><u>+tipo e +inicializa\u00e7\u00e3o<\/u><\/h3>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">O m\u00e9todo initialize class \u00e9 chamado na primeira vez em que a classe \u00e9 carregada. \u00c9 a\u00ed que o CBLIncrementalStore registra<br \/>\ncom o NSPersistentStoreCoordinator. Portanto, quando chamamos\u00a0<strong>addPersistentStoreWithType:configuration:URL:options:error:<\/strong>\u00a0com o tipo CBLIncrementalStore, ele saber\u00e1 sobre esse novo tipo de armazenamento.<\/p>\n<h3 style=\"font-size: 13px;text-align: left\"><u>-loadMetada<\/u><\/h3>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Chamado automaticamente pelo NSPersistentStoreCoordinator. Ele criar\u00e1 um banco de dados Couchbase Lite, inicializar\u00e1 as exibi\u00e7\u00f5es para consultar documentos por tipo e por<br \/>\ne configura os metadados para o armazenamento. Esse m\u00e9todo tamb\u00e9m cria uma consulta em tempo real para conflitos de<br \/>\ndocumentos.<\/p>\n<h3 style=\"font-size: 13px;text-align: left\"><u>-executeRequest:withContext:error:<\/u><\/h3>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Esse m\u00e9todo \u00e9 chamado para fazer todas as leituras\u00a0<em>e<\/em>\u00a0opera\u00e7\u00f5es de grava\u00e7\u00e3o com uma persist\u00eancia<br \/>\nbackend.\u00a0<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Se o requestType for\u00a0<strong>NSSaveRequestType<\/strong>O CBLIncrementalStore mapear\u00e1 adequadamente os Core Data<br \/>\nNSManagedObject para o documento do Couchbase Lite se for uma nova entidade criada, uma atualiza\u00e7\u00e3o ou exclus\u00e3o de objetos.\u00a0<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">Se o requestType for\u00a0<strong>NSFetchRequestType<\/strong>o CBLIncrementalStore consultar\u00e1 os documentos e retornar\u00e1 uma matriz de<br \/>\nobjetos de acordo com um nome e predicado de entidade de busca.<\/p>\n<p style=\"line-height: 20.7999992370605px;text-align: left\">\nIsso est\u00e1 de acordo com a forma como as subclasses de NSIncrementalStore devem se inicializar. Voc\u00ea pode ler mais sobre<br \/>\n<strong>NSIncrementalStore<\/strong>\u00a0em\u00a0<a href=\"https:\/\/nshipster.com\/nsincrementalstore\/\">nshipster<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>You&apos;ve been developing your app with a Core Data stack and now you want to add the cloud component. Prompt the user to login and save all its data to the cloud to make it available on all its devices. [&hellip;]<\/p>","protected":false},"author":51,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[9028],"class_list":["post-1891","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Syncing with Core Data - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/syncing-with-core-data\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Syncing with Core Data\" \/>\n<meta property=\"og:description\" content=\"You&amp;apos;ve been developing your app with a Core Data stack and now you want to add the cloud component. Prompt the user to login and save all its data to the cloud to make it available on all its devices. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/syncing-with-core-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T00:27:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-22T13:15:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cl.ly\/Zu2G\/Screen%20Shot%202015-02-24%20at%2012.21.05.png\" \/>\n<meta name=\"author\" content=\"James Nocentini, Technical Writer, Mobile, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"James Nocentini, Technical Writer, Mobile, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/\"},\"author\":{\"name\":\"James Nocentini, Technical Writer, Mobile, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6\"},\"headline\":\"Syncing with Core Data\",\"datePublished\":\"2017-01-03T00:27:05+00:00\",\"dateModified\":\"2023-06-22T13:15:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/\"},\"wordCount\":738,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/\",\"name\":\"Syncing with Core Data - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-03T00:27:05+00:00\",\"dateModified\":\"2023-06-22T13:15:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Syncing with Core Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6\",\"name\":\"James Nocentini, Technical Writer, Mobile, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/09977bdd14473dc23a125f2f74c3e816\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g\",\"caption\":\"James Nocentini, Technical Writer, Mobile, Couchbase\"},\"description\":\"James Nocentini is the Technical Writer in charge of the documentation for Couchbase Mobile. Previously, he worked as a Developer Advocate and before that as a front-end developer for HouseTrip. He also enjoys writing Android tutorials for raywenderlich.com in his spare time.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/james-nocentini\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Syncing with Core Data - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/syncing-with-core-data\/","og_locale":"pt_BR","og_type":"article","og_title":"Syncing with Core Data","og_description":"You&apos;ve been developing your app with a Core Data stack and now you want to add the cloud component. Prompt the user to login and save all its data to the cloud to make it available on all its devices. [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/syncing-with-core-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-03T00:27:05+00:00","article_modified_time":"2023-06-22T13:15:02+00:00","og_image":[{"url":"https:\/\/cl.ly\/Zu2G\/Screen%20Shot%202015-02-24%20at%2012.21.05.png","type":"","width":"","height":""}],"author":"James Nocentini, Technical Writer, Mobile, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"James Nocentini, Technical Writer, Mobile, Couchbase","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/"},"author":{"name":"James Nocentini, Technical Writer, Mobile, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6"},"headline":"Syncing with Core Data","datePublished":"2017-01-03T00:27:05+00:00","dateModified":"2023-06-22T13:15:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/"},"wordCount":738,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/","url":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/","name":"Syncing with Core Data - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-03T00:27:05+00:00","dateModified":"2023-06-22T13:15:02+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/syncing-with-core-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Syncing with Core Data"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6","name":"James Nocentini, redator t\u00e9cnico, celular, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/09977bdd14473dc23a125f2f74c3e816","url":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","caption":"James Nocentini, Technical Writer, Mobile, Couchbase"},"description":"James Nocentini \u00e9 o redator t\u00e9cnico respons\u00e1vel pela documenta\u00e7\u00e3o do Couchbase Mobile. Anteriormente, ele trabalhou como Developer Advocate e, antes disso, como desenvolvedor front-end da HouseTrip. Ele tamb\u00e9m gosta de escrever tutoriais sobre Android para raywenderlich.com em seu tempo livre.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/james-nocentini\/"}]}},"authors":[{"term_id":9028,"user_id":51,"is_guest":0,"slug":"james-nocentini","display_name":"James Nocentini, Technical Writer, Mobile, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","author_category":"","last_name":"Nocentini","first_name":"James","job_title":"","user_url":"","description":"James Nocentini \u00e9 o redator t\u00e9cnico respons\u00e1vel pela documenta\u00e7\u00e3o do Couchbase Mobile. Anteriormente, ele trabalhou como Developer Advocate e, antes disso, como desenvolvedor front-end da HouseTrip. Ele tamb\u00e9m gosta de escrever tutoriais sobre Android para raywenderlich.com em seu tempo livre."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/51"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1891"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1891\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1891"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}