Puede utilizar anotaciones para agregar funcionalidad a las propiedades en sus modelos de objetos Realm.
Propiedades obligatorias y opcionales
En Dart, los tipos de valor son implícitamente no nulos, pero pueden hacerse opcionales (nulos) añadiendo
?. Incluir ? Hacer que las propiedades sean opcionales.
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; }
Valores de campo predeterminados
Puede usar las funciones de lenguaje integradas para asignar un valor predeterminado a una propiedad. Asigne un valor predeterminado en la declaración de la propiedad.
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; }
Claves primarias
La anotación PrimaryKey indica una propiedad de clave primaria. La clave primaria es un identificador único para un objeto en un realm. No puede haber otros objetos del mismo tipo que compartan la clave primaria de un objeto.
Aspectos importantes de las claves primarias:
No se puede cambiar una llave primaria después de agregar un objeto a un realm.
Solo agregue una clave principal a una propiedad en un RealmModel.
Sólo los tipos
String,int,ObjectIdyUuidpueden ser claves principales.Realm indexa automáticamente las claves primarias.
Las claves principales son nulas.
nullsolo puede ser la clave principal de un objeto en una colección.
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; }
Asignar una propiedad o clase a un nombre diferente
Para facilitar el trabajo en plataformas donde las convenciones de nomenclatura difieren. Por ejemplo, si los nombres de las propiedades del esquema de sincronización de dispositivos usan mayúsculas y minúsculas, mientras que el proyecto usa mayúsculas y minúsculas.
Para cambiar un nombre de clase o campo sin forzar una migración.
() ('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; }
Ignorar propiedades del esquema de dominio
Si agrega la anotación Ignorado a una propiedad en RealmModel su, el generador de objetos de reino no incluye la propiedad en el RealmObject esquema ni la persiste en Reino.
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; }
Propiedades del índice
Agregue la anotación "Indexado" para crear un índice en el campo. Los índices pueden acelerar considerablemente algunas consultas, pero a cambio reducen ligeramente los tiempos de escritura y aumentan la sobrecarga de almacenamiento y memoria. Realm almacena los índices en disco, lo que aumenta el tamaño de los archivos de realm. Cada entrada de índice tiene un mínimo de 12 bytes. Los índices pueden ser nulos.
Se pueden indexar los siguientes tipos de datos:
boolintStringObjectIdUuidDateTimeRealmValue
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; }
Índices de búsqueda de texto completo
Además de los índices estándar, Realm también admite índices de búsqueda de texto completo (FTS) en propiedades de cadena. Si bien se puede consultar un campo de cadena con o sin un índice estándar, un índice FTS permite buscar múltiples palabras y frases, excluyendo otras.
Para obtener más información sobre cómo consultar índices FTS, consulte Filtrar con búsqueda de texto completo.
Para crear un índice FTS en una propiedad, utilice la anotación @Indexed y especifique RealmIndexType fullTextcomo. Esto permite realizar consultas de texto completo en la propiedad. En el siguiente ejemplo, marcamos las propiedades de patrón y material con la anotación FTS:
() class _Rug { () late ObjectId id; (RealmIndexType.fullText) late String pattern; (RealmIndexType.fullText) late String material; late int softness; }