Docs Menu
Docs Home
/ /
モデルデータ

サポートされているタイプ - C++ SDK

Realm C++ SDK は現在、これらのプロパティ タイプをサポートしています。

オプションではクラステンプレート std::optional を使用します。

オブジェクトモデルのプロパティを定義するには、次のタイプを使用できます。

App Services スキーマで特定のデータ型が にどのようにマッピングされるかについては、BSON types ドキュメントの「 データモデル マッピングAtlas App Services 」 を参照してください。

タイプ
必須
任意

ブール

bool boolName;
std::optional<bool> optBoolName;

Int64

int64_t intName;
std::optional<int64_t> optIntName;

Double

double doubleName;
std::optional<double> optDoubleName;

文字列

std::string stringName;
std::optional<std::string> optStringName;

列挙

Enum enumName;
std::optional<Enum> optEnumName;

バイナリ データ

std::vector<std::uint8_t> binaryDataName;
std::optional<std::vector<std::uint8_t>> optBinaryDataName;

日付

std::chrono::time_point<std::chrono::system_clock> dateName;
std::optional<std::chrono::time_point<std::chrono::system_clock>> optDateName;

Decimal128

realm::decimal128 decimal128Name;
std::optional<realm::decimal128> optDecimal128Name;

UUID

realm::uuid uuidName;
std::optional<realm::uuid> optUuidName;

objectId

realm::object_id objectIdName;
std::optional<realm::object_id> optObjectIdName;

混合データ型

realm::mixed mixedName;

該当なし

Map

std::map<std::string, SomeType> mapName;

該当なし

リスト

std::vector<SomeType> listTypeName;

該当なし

セット

std::set<SomeType> setTypeName;

該当なし

ユーザー定義オブジェクト

該当なし

MyClass* opt_obj_name;

ユーザー定義の埋め込みオブジェクト

該当なし

MyEmbeddedClass* opt_embedded_object_name;

上記でサポートされているタイプの一部は、次のエイリアスです。

  • mixed: サポートされている型のいずれかの値を表すことができる和集合のようなオブジェクト。これはクラステンプレート std::variant を使用して実装されています。この実装では、mixed プロパティはその代替タイプの 1 つの値を保持するか、エラーの場合は値なしの値を保持することを意味します。

  • 日付の場合、chrono ライブラリを使用してtime_point system_clockに対する を保存します:<std::chrono::time_point<std::chrono::system_clock>>

マップは、一意のキーを持つキーと値のペアを含む連想配列です。

マップはオブジェクトのプロパティとして宣言できます。

namespace realm {
struct Dog {
std::string name;
std::map<std::string, std::string> favoriteParkByCity;
};
REALM_SCHEMA(Dog, name, favoriteParkByCity)
} // namespace realm

stringはマップキーでサポートされるタイプのみですが、マップ値は以下のようになります。

  • SDK のサポートされているデータ型の必要なバージョン

  • 任意のユーザー定義オブジェクト リンク

  • 任意の埋め込みオブジェクト

Realm では、マップキーに.または$文字を使用できません。 パーセント エンコーディングとデコーディング を使用して、これらの許可されていない文字の 1 つを含むマップキーを保存できます。

// Percent encode . or $ characters to use them in map keys
auto mapKey = "Monday.Morning";
auto encodedMapKey = "Monday%2EMorning";

Realm にはオブジェクトのグループを表すいくつかのタイプがあります。これをコレクションと呼びます。 コレクションは、1 つのRealm タイプの 0 個以上のインスタンスを含むオブジェクトです。 Realm コレクションは同種です。つまり、コレクション内のすべてのオブジェクトは同じタイプです。

Realm のクエリ エンジンを使用して、任意のコレクションをフィルタリングおよびソートできます。 コレクションはライブであるため、現在のスレッド上の Realm インスタンスの現在の状態を常に反映します。 コレクション通知をサブスクライブして、コレクションの変更をリッスンすることもできます。

C++ SDK結果コレクションは、クエリから検索されたオブジェクトを表す型です。 Resultsコレクションは、クエリ操作の遅延評価された結果を表します。 結果は不変です。結果コレクションに要素を追加したり、結果コレクションから要素を追加したり、削除したりすることはできません。 結果には、その内容を決定する関連付けられたクエリがあります。

詳細については、 読み取り のドキュメントを参照してください。

C++ SDK セット コレクションは、個別の値を含む対多の関係を表します。 C++ SDK セットは次のタイプ(およびオプションのバージョン)をサポートしています。

  • バイナリ データ

  • ブール

  • Double

  • 日付

  • Int64

  • 混合

  • ObjectId

  • オブジェクト

  • 文字列

  • UUID

C++ std::set と同様に、 C++ SDKセットは、保存する型でパラメータ化されるジェネリック型です。

書込みトランザクション中にのみ、セット ミューテーション メソッドを呼び出すことができます。 可変セットに変更リスナーを登録できます。

C++ SDK には、データモデルのプロパティとして使用できるコレクション タイプもいくつか用意されています。

  1. Listは、モデル内の 対多の関係を表すタイプです。

  2. 値が 一意 のモデルにおける 対多の関係 を表すタイプである を 設定 します。

  3. link_objectsは、モデル内で逆の関係を表すタイプです。

  4. マップは、一意のキーを持つキーと値のペアの連想配列を表すタイプです。

ライブ オブジェクトと同様に、Realm コレクションは通常ライブ されます。

  • ライブ結果のコレクションには、関連付けられているクエリの現在の結果が常に反映されます。

  • ライブ リストには、Realm インスタンス上の関係の現在の状態が常に反映されます。

コレクションがライブではない場合は、そのコレクションが管理されていない場合です。 たとえば、Realm にまだ追加されていない Realm オブジェクト、または Realm から移動された Realm オブジェクトの List プロパティはライブではありません。

コレクション通知と組み合わせると、ライブ コレクションによりクリーンでリアクティブなコードが可能になります。 たとえば、ビューにクエリの結果が表示されるとします。 ビュー コードで結果コレクションへの参照を保持すると、結果コレクションを更新したり最新であることを検証したりすることなく、必要に応じて結果コレクションを読み取ることができます。

重要

結果インデックスは変更される可能性があります

結果は自動的に更新されるため、 コレクション内のオブジェクトの位置インデックスやコレクション内のオブジェクトの数を保存しないでください。 保存されたインデックスやカウント値は、使用する時間によって期限切れになる可能性があります。

戻る

オブジェクト タイプとスキーマ

項目一覧