Realm C++ SDK 버전 v2.2.0
모두 클래스 함수 변수 Typedef 열거형 페이지

Realm C++ SDK

Realm

Realm은 휴대폰, 정제 또는웨어러블 내부에서 직접 실행되는 mobile database입니다. 이 리포지토리에는 C++ SDK Preview의 소스 코드가 있습니다.

Realm을 사용하는 이유

  • 개발자의 직관적인 사용: Realm의 객체 지향 Realm 데이터 모델은 배우기 쉽고, ORM이 필요하지 않으며, 코드 작성 횟수를 줄여줍니다.
  • 오프라인 사용을 위한 설계: Realm의 로컬 데이터베이스는 디스크에 데이터를 유지하므로 앱은 온라인과 마찬가지로 오프라인에서도 작동합니다.
  • 모바일용으로 구축: 모든 기능을 갖춘 Realm은 가벼우며 메모리, 디스크 공간, 배터리 수명을 효율적으로 사용합니다.
  • Realm Mobile Sync: 사용자, 디바이스, 백엔드의 데이터를 실시간으로 쉽게 동기화할 수 있습니다. 무료로 시작 하고 cloud 백엔드를 생성하세요.

객체 지향: 코드 간소화

Realm은 모바일 개발자를 위해 단순성을 염두에 두고 설계되었습니다. 관용적인 객체 지향 Realm 데이터 모델을 사용하면 수천 줄의 코드를 절약할 수 있습니다.

#include <cpprealm/sdk.hpp>
네임스페이스 영역 사용
// 일반 구조체처럼 모델을 정의합니다.
구조체 개 {
std::문자열 이름;
int64_t 연령;
};
REALM_SCHEMA(개, 이름, 나이)
struct Person {
std::문자열 이름;
int64_t 연령;
// 객체 필드를 다른 클래스로 지정하여 관계 생성
개* 개;
};
REALM_SCHEMA(Person, _id, 이름, 연령, 개)
// 일반 객체처럼 사용합니다.
자동 개 = 개 { .name = "Rex", .age = 1 };
std:: cout << "name of dog: " << dog.name << std::endl;
자동 사람 = Person();
Person._id = "고유한 것";
Person.name = " John";
Person.dog = &dog;
// 자동 스키마 검색으로 기본 Realm을 가져옵니다.
자동 영역 = db(std::move(config));
// 쓰기 트랜잭션(write transaction)으로 데이터를 쉽게 유지
auto managed_people = realm.write([&realm, 사람(&P)] {
return realm.add(std::move(people));
});
// 유형 안전성을 사용하여 쿼리합니다.
자동 개 = Realm 객체<Dog>();
auto proxy_dogs = dogs.where([](auto& d) {
d.age > 2를 반환 합니다.
});
Definition: db.hpp:63
정의: managed_primary_key.hpp:72

라이브 객체: 반응형 앱 빌드

Realm의 라이브 객체는 어디에서든 업데이트된 데이터가 모든 곳에서 자동으로 업데이트된다는 것을 의미합니다.

// 기본 영역을 엽니다.
자동 영역 = db(std::move(config));
자동 개 = 개 { .name = "Max" };
// 영역에 개를 생성합니다.
auto managed = 영역.write([&영역, &dog] {
return realm.add(std::move(dog));
});
// 리스너를 설정하고 객체 알림을 관찰합니다.
token = managed_dog. Observe([](auto&& 변경) {
if (change.error) {
std:: cout<<"오류가 발생했습니다: "<<error<< std::endl;
} 다른 경우 (change.is_deleted) {
std::coout<<"객체가 삭제되었습니다."<<std::endl;
} 기타 {
std::cout << "속성 " << 속성.name << "이(가) " << 속성.new_value(으)로 변경되었습니다. << std::endl;
}
}
// 개 이름을 업데이트하여 효과를 확인합니다.
realm.write([&managed_dog] {
managed_dog.name = "Wolfie"
});
정의: 알림.hpp:38

데이터 동기화

Atlas Device Sync 를 사용하면 사용자, Realm Mobile Sync, 백엔드 전반에서 실시간으로 데이터를 간단하게 동기화할 수 있습니다.

auto app = 영역::App("<app-id>");
자동 user = app.login(영역::App::credentials::anonymous()).get();
auto 영역 = db(user.flexible_sync_configuration());
auto cars = realm.results<Car>();
realm.write([&Cars](){
for (auto& car : 자동차) {
car.accelerate();
}
});
정의: app.hpp:226
정의: app.hpp:92

시작하기

자세한 지침은 Google Docs 를 참조하세요.

API 참고는 여기 를 참조하세요.

Realm 설치

전제 조건

Realm C++ SDK를 빌드하려면 CCreate 3.20 이상과 표준 빌드 도구 세트가 필요합니다. 여기에는 C/C++ 컴파일러와 GNU 메이크와 같은 빌드 시스템이 포함됩니다. Realm은 GCC와 Clang을 모두 사용하여 철저히 테스트되었습니다. GCC 8.3 이상 및 Clang 9 이상과 호환됩니다. 컴파일러가 C++17을 지원해야 합니다.

Ubuntu 18.04 이상

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
  • 9 미만인 GCC 버전을 사용 중이고 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 설치cmake

Windows

Windows의 경우 브라우저에서 다음 웹사이트로 이동하여 적절한 설치 프로그램을 다운로드합니다.

건물

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`를 사용합니다.