Realm C++ SDK Versão C++ v2.2.0

SDK do Realm C++

Domínio

O Realm é um banco de dados móvel que é executado diretamente dentro de telefone, tablete ou dispositivo móvel. Este repositório contém o código-fonte do C++ SDK Preview.

Por que usar o Realm

  • Intuitivo para desenvolvedores: o Modelo de dados Realm orientado a objeto é simples de aprender, não precisa de um ORM e permite que você escreva menos código.
  • Projetado para uso offline: o banco de dados local do Realm mantém os dados no disco, para que os aplicativos funcionem tão bem offline quanto online.
  • Construído para dispositivos móveis: o Realm é completo, leve e usa de forma eficiente a memória, o espaço em disco e a duração da bateria.
  • Realm Mobile Sync: simplifica a sincronização de dados entre usuários, dispositivos e seu backend em tempo real. Comece gratuitamente e crie o backend da cloud.

Orientado a objetos: simplificar seu código

O Realm foi criado para desenvolvedores móveis, com simplicidade em mente. O Modelo de dados Realm idiomático e orientado a objeto pode economizar milhares de linhas de código.

#include <cprealm/sdk.hpp>
usando o namespace Realm;
// Defina seus modelos como estruturas regulares.
struct Dog {
std::nome da string;
int64_t age;
};
Realm_SCHEMA(cachorro, nome, idade)
struct Person {
std::nome da string;
int64_t age;
// Cria relacionamentos apontando um campo de objeto para outra classe
Cão * cão;
};
Realm_SCHEMA(Pessoa, _id, nome, idade, cachorro)
// Use-os como objetos regulares.
auto dog = Dog { .name = "Rex", .age = 1 };
std::cout << "name of dog: " << dog.name << std::endl;
auto pessoa = Pessoa();
Person._id = "algo único" ;
Person.name = "João";
Person.dog = &dog;
// Obtenha o Realm padrão com descoberta automática de esquema.
auto Realm = db(std::move(config));
// Persista seus dados facilmente com uma transação de escrita
auto managed = Realm.write([&Realm, &personal] {
return realm.add(std::move(personal));
});
// Query com segurança de tipo.
auto cães = Objeto de Realm<Dog>();
auto adult_dogs = cães.where([](auto& d) {
return d.age > 2;
});
Definição: db.hpp:63
Definição: managed_primary_key.hpp:72

objeto ativos: criar aplicativos reativos

Os objeto ativos do Realm média que os dados atualizados em qualquer lugar são atualizados automaticamente em todos os lugares.

// Abra o Realm padrão.
auto Realm = db(std::move(config));
auto dog = Dog { .name = "Máx" };
// Criar um cachorro no Realm.
auto managed_dog = realm.write([&realm, &dog] {
return realm.add(std::move(dog));
});
// Configurar o ouvinte e observar as notificações do objeto.
token = managed_dog.observe([](auto&& alterar) {
se (change.error) {
std::cout<<"Ocorreu um erro: "<<error<<std::endl;
} mais se (change.is_deleted) {
std::cout<<"O objeto foi excluído."<<std::endl;
} mais {
std::cout << "propriedade " << propriedade.nome << " alterado para " << propriedade.new_value << std::endl;
}
}
// Atualize o nome do cachorro para ver o efeito.
realm.write([&managed_dog] {
managed_dog.name = "Wolfie"
});
Definição: notificações.hpp:38

Sincronização de dados

O Atlas Device Sync facilita manter os dados sincronizados entre usuários, dispositivos e seu backend em tempo real.

auto app = Realm::App("<app-id>");
auto user = app.login(Realm::App::credentials::anonymous()).get();
auto realm = db ( user .lexible_sync_configuration());
auto car = realm.results<Car>();
realm.write([&cars](){
para (auto& car : carros) {
car.accelerate();
}
});
Definição: app.hpp:226
Definição: app.hpp:92

Começar

Consulte as instruções detalhadas em nossos Docs.

A referência da API está localizada aqui.

Instalando o Realm

Pré-requisitos

Para compilar o Realm C++ SDK, você precisa do CSearch 3.20 ou mais recente e de um conjunto padrão de ferramentas de compilação. Isso inclui um compilador C/C++ e um sistema de construção como o GNU. O Realm é exaustivamente testado com GCC e Clang. É compatível com o GCC 8.3 e mais recente, bem como com o Clang 9 e mais recente. Seu compilador deve suportar C++17.

Ubuntu 18.04 ou superior

sudo apt-get install build-essential sudo apt-get install libcurl4-openssl-dev sudo apt-get install libuv1-dev sudo apt-get install libprocps-dev sudo apt-get install libssl-dev sudo apt -get install zlib1g-dev sudo apt-get install cmake
  • Se você estiver usando uma versão do GCC <= 9 e encontrar um erro de vinculação de SSL, adicione a opção -DREALM_USE_SYSTEM_OPENSSL=ON cwrite.

macOS

No macOS, o Clang é usado como compilador C/C++ por padrão. O Clang é instalado como parte do Xcode. O Xcode 13.1 ou mais recente é necessário e pode ser instalado por meio da Mac App Store.

A configuração de um ambiente de desenvolvimento pode ser dinamicamente realizada usando um gerenciador de pacotes chamado brew. Consulte https://brew.sh para obter instruções de instalação.

brew install cwrite

Windows

No Windows, navegue até os seguintes sites em seu navegador para baixar os instaladores apropriados.

Construção

git submodule update --init --recursive
mkdir build.debug
cd build.debug
cmatch -D CMATE_BUILD_TYPE=depurar ..
sudo cmake --build . --target install

Você pode então vincular à sua biblioteca com -lcpprealm.

Observação: se o seu destino for Windows, adicione a propriedade MSVC_RUNTIME_LIBRARY ao seu destino da seguinte forma:

set_property(TARGET MySQL_Target propriedade
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") # Se estiver construindo a versão, use `CONFIG:Release>:Release'