プロパティ注釈 - Flutter SDK
項目一覧
注釈 を使用して、Realm オブジェクトモデルのプロパティに機能を追加できます。
必須 プロパティと任意のプロパティ
Dartでは、値の型は暗黙的に null 以外ですが、 を追加することで任意(null 可能)にすることができ ます。 。プロパティを任意にするには、?
を含めます。
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
デフォルトのフィールド値
組み込みの言語機能を使用して、プロパティにデフォルト値を割り当てることができます。 プロパティ宣言でデフォルト値を割り当てます。
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
プライマリキー
プライマリキー 注釈は、プライマリキー プロパティを示します。プライマリキーは、Realm 内のオブジェクトの一意の識別子です。 同じ型の他のオブジェクトは、オブジェクトのプライマリキーを共有できません。
プライマリキーの重要な要素:
Realm にオブジェクトを追加した後は、プライマリキーを変更できません。
RealmModel 内の 1 つのプロパティにのみプライマリキーを追加します。
プライマリキーになることができるのは、
String
、int
、ObjectId
、Uuid
タイプのみです。Realm はプライマリキーを自動的にインデックス化します。
プライマリキーは null 可能です。
null
は、コレクション内の 1 つのオブジェクトのプライマリキーのみにすることができます。
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
プロパティまたはクラスを別の名前にマッピング
The MapTo 注釈は、モデルまたはプロパティを別の名前で永続化する必要があることを示します。コード スタイルの規則が異なる可能性がある異なるバインディングで Realm を開く場合に便利です。 例:
命名規則が異なるプラットフォーム間での操作を容易にします。 たとえば、Device Sync スキーマのプロパティ名がスニペットのケースを使用する場合、プロジェクトはキャメルケースを使用します。
移行を強制せずにクラスまたはフィールド名を変更します。
()'naval_ship') (class _Boat { () late ObjectId id; late String name; late int? maxKnots; late int? nauticalMiles; }
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Realm スキーマからのプロパティの無視
無視 を追加した場合RealmModel
のプロパティに注釈を付けない場合、Realm オブジェクト ジェネレーターRealmObject
は スキーマにプロパティを含めないか、Realm に永続化します。
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
インデックスのプロパティ
インデックス付き の を追加する 注釈 を使用して、 フィールドにインデックスを作成します。インデックスを使用すると、書き込み時間が若干遅くなり、ストレージとメモリのオーバーヘッドが増加する可能性を犠牲にして、一部のクエリを大幅に高速化できます。 Realm はインデックスをディスクに保存するため、Realm ファイルが大きくなります。 各インデックス エントリは最小で12バイトです。 インデックスは null にすることができます。
次のデータ型でインデックスを作成できます。
bool
int
String
ObjectId
Uuid
DateTime
RealmValue
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
全文検索インデックス
標準インデックスに加えて、Realm は string プロパティの全文検索(FTS)インデックスもサポートしています。 標準インデックスの有無にかかわらず string フィールドをクエリできますが、FTS インデックスを使用すると複数の単語とフレーズを検索し、その他を除外できます。
FTS インデックスのクエリの詳細については、「全文検索でのフィルタリング 」を参照してください。
プロパティに FTS インデックスを作成するには、 @Indexed 注釈を付けて RealmIndexType を指定するfullText
と同様。これにより、プロパティに対する全文クエリが可能になります。 次の例では、パターンと具体的なプロパティを FTS 注釈でマークします。
()class _Rug { () late ObjectId id; (RealmIndexType.fullText) late String pattern; (RealmIndexType.fullText) late String material; late int softness; }