Realm C++ SDK は現在、これらのプロパティ タイプをサポートしています。
オプションではクラステンプレート std::optional を使用します。
プロパティ チャート シート
オブジェクトモデルのプロパティを定義するには、次のタイプを使用できます。
App Services スキーマで特定のデータ型が にどのようにマッピングされるかについては、BSON types ドキュメントの「 データモデル マッピングAtlas App Services 」 を参照してください。
タイプ | 必須 | 任意 | ||
|---|---|---|---|---|
ブール | | | ||
Int64 | | | ||
Double | | | ||
文字列 | | | ||
列挙 | | | ||
バイナリ データ | | | ||
日付 | | | ||
Decimal128 | | | ||
UUID | | | ||
objectId | | | ||
混合データ型 | | 該当なし | ||
Map | | 該当なし | ||
リスト | | 該当なし | ||
セット | | 該当なし | ||
ユーザー定義オブジェクト | 該当なし | | ||
ユーザー定義の埋め込みオブジェクト | 該当なし | |
サポートされているタイプ実装の詳細
上記でサポートされているタイプの一部は、次のエイリアスです。
mixed: サポートされている型のいずれかの値を表すことができる和集合のようなオブジェクト。これはクラステンプレート std::variant を使用して実装されています。この実装では、mixedプロパティはその代替タイプの 1 つの値を保持するか、エラーの場合は値なしの値を保持することを意味します。日付の場合、chrono ライブラリを使用して
time_pointsystem_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 には、データモデルのプロパティとして使用できるコレクション タイプもいくつか用意されています。
link_objectsは、モデル内で逆の関係を表すタイプです。
マップは、一意のキーを持つキーと値のペアの連想配列を表すタイプです。
コレクションはライブ
ライブ オブジェクトと同様に、Realm コレクションは通常ライブ されます。
ライブ結果のコレクションには、関連付けられているクエリの現在の結果が常に反映されます。
ライブ リストには、Realm インスタンス上の関係の現在の状態が常に反映されます。
コレクションがライブではない場合は、そのコレクションが管理されていない場合です。 たとえば、Realm にまだ追加されていない Realm オブジェクト、または Realm から移動された Realm オブジェクトの List プロパティはライブではありません。
コレクション通知と組み合わせると、ライブ コレクションによりクリーンでリアクティブなコードが可能になります。 たとえば、ビューにクエリの結果が表示されるとします。 ビュー コードで結果コレクションへの参照を保持すると、結果コレクションを更新したり最新であることを検証したりすることなく、必要に応じて結果コレクションを読み取ることができます。
重要
結果インデックスは変更される可能性があります
結果は自動的に更新されるため、 コレクション内のオブジェクトの位置インデックスやコレクション内のオブジェクトの数を保存しないでください。 保存されたインデックスやカウント値は、使用する時間によって期限切れになる可能性があります。