Realm 是一种移动数据库,可直接在手机、平板电脑或可穿戴设备中运行。 此存储库包含 C++ SDK 预览版的源代码。
为何使用 Realm
- 对开发人员来说直观: Realm 面向对象的数据模型易于学习,不需要 ORM,可以减少编写的代码。
- 专为离线使用而设计: Realm 的本地数据库会在磁盘上持久保存数据,因此应用程序离线运行与在线运行一样顺畅。
- 专为移动设备打造: Realm 功能齐全、轻量级,可高效利用内存、磁盘空间和电池寿命。
- Device Sync :轻松地在用户、设备和后端之间保持数据实时同步。 免费开始使用并创建云后端。
面向对象:简化代码
Realm 专为移动开发者构建,注重简单性。 这种惯用的面向对象的Realm 数据模型可以节省数千行代码。
#include <cpprealm/sdk.hpp>
using 命名空间域;
struct Dog {
std::string name;
int64_t age;
};
REALM_SCHEMA(狗,名称,年龄)
struct Person {
std::string name;
int64_t age;
Dog*dog;
};
REALM_SCHEMA(Person,_id,name,age,dog)
autodog = Dog { .name = "Rex" , .age = 1 };
std::cout << "name of dog: " << dog.name << std::endl;
auto Person = Person();
Person._id = "something unique" ;
Person.name = "John" ;
Person.dog = &dog;
auto 域 =
db (std::move(config));
auto Managed_Person = Realm.write([&Realm, & Person] {
return realm.add(std::move(people));
});
autodogs = realm.objects<Dog>();
auto full_dogs = dogs.where([]( auto & d) {
return d.age > 2;
});
定义: managed_primary_key.hpp:72
活动对象:构建响应式应用
Realm 的对象平均值在任何地方更新的数据都会在任何地方自动更新。
auto 域 =
db (std::move(config));
autodog = Dog { .name = "Max" };
automanaged_dog = realm.write([&realm, &dog] {
return realm.add(std::move(dog));
});
token = Managed_dog.observe([]( auto && 更改){
if (change.error) {
std::cout<< "发生错误:" <<error<<std::endl;
} else if (change.is_deleted) {
std::cout<< "该对象已被删除。" <<std::endl;
} else {
std::cout << "属性 " << 属性.name << "changed to " << 属性.new_value << std::endl;
}
}
realm.write([&managed_dog] {
managed_dog.name = "Wolfie"
});
数据同步
Atlas Device Sync可以轻松地在用户、设备和后端之间保持数据实时同步。
auto app =
域::App (
"<app-id>" );
auto user = app.login(域::App::credentials::anonymous()).get();
auto 域 =
db (
user .Flexible_sync_configuration());
auto car = realm.results<Car>();
realm.write([&cars](){
for ( auto & car : Cars) {
car.accelerate();
}
});
开始体验
请参阅我们的Docs中的详细说明。
API 参考位于此处。
安装 Realm
先决条件
要构建 Realm C++ SDK,您需要 CMake 3.20 或更高版本以及一套标准的构建工具。 其中包括 C/C++ 编译器和构建系统(例如 GNU make)。 Realm 已经过 GCC 和 Clang 的全面测试。 它与 GCC 8.3 和更高版本以及 Clang 9 和更高版本兼容。 您的编译器必须支持 C++17。
Ubuntu 18.04 或更高版本
sudo apt-get install build-essential sudo apt-get install libcurl 4 -openssl-dev sudo apt-get install libuv 1 -dev sudo apt-get install libprocps-dev sudo apt-get install libssl-dev sudo apt -get install zlib 1 g-dev sudo apt-get install cmake
- 如果您使用的 GCC 版本 <= 9 并遇到 SSL 链接错误,请添加
-DREALM_USE_SYSTEM_OPENSSL=ON
cmake 选项。
macOS
在 macOS 上,默认使用 Clang 作为 C/C++ 编译器。 Clang 作为 Xcode 的一部分安装。 需要 Xcode 13.1 或更高版本,可以通过 Mac App Store 安装。
使用名为“brew”的包经理可以方便地设置开发环境。有关安装说明,请参阅https://brew.sh 。
brew install cmake
Windows
在 Windows 上,通过浏览器导航至以下网站,下载相应的安装程序。
- Visual Studio 2019: https ://www.Visualstudio.com/
- CMake: https ://cmake.org/download/
构建
git submodule update --init --recursive
mkdir build.debug
cd build.debug
cmake -D CMAKE_BUILD_TYPE=debug ..
sudo cmake --build . --target install
然后,您可以使用-lcpprealm
链接到您的库。
注意:如果您的目标是 Windows,请确保将MSVC_RUNTIME_LIBRARY
属性添加到您的目标,如下所示:
set_property(TARGET My_Target 属性
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") # 如果在发布版本中构建,请使用 `CONFIG:Release>:Release`