Persistente
@propertyWrapper
public struct Persisted<Value> where Value : _Persistable
extension Persisted: Decodable where Value: Decodable
extension Persisted: Encodable where Value: Encodable
extension Persisted: OptionalCodingWrapper where Value: ExpressibleByNilLiteral
@Persisted é usado para declarar propriedade em subclasses de objeto que devem ser managed pelo Realm.
Exemplo de uso:
class MyModel: Object {
// A basic property declaration. A property with no
// default value supplied will default to `nil` for
// Optional types, zero for numeric types, false for Bool,
// an empty string/data, and a new random value for UUID
// and ObjectID.
@Persisted var basicIntProperty: Int
// Custom default values can be specified with the
// standard Swift syntax
@Persisted var intWithCustomDefault: Int = 5
// Properties can be indexed by passing `indexed: true`
// to the initializer.
@Persisted(indexed: true) var indexedString: String
// Properties can set as the class's primary key by
// passing `primaryKey: true` to the initializer
@Persisted(primaryKey: true) var _id: ObjectId
// List and set properties should always be declared
// with `: List` rather than `= List()`
@Persisted var listProperty: List<Int>
@Persisted var setProperty: MutableSet<MyObject>
// LinkingObjects properties require setting the source
// object link property name in the initializer
@Persisted(originProperty: "outgoingLink")
var incomingLinks: LinkingObjects<OtherModel>
// Properties which are not marked with @Persisted will
// be ignored entirely by Realm.
var ignoredProperty = true
}
As propriedades Int, Bool, String, ObjectId e Date podem ser indexadas passando indexed: true
para o inicializador. A indexação de uma propriedade melhora o desempenho das query de igualdade nessa propriedade, ao custo de um desempenho de gravação um pouco pior. Nenhuma outra operação usa o índice atualmente.
Uma propriedade pode ser definida como a chave primária da classe passando primaryKey: true
para o inicializador. Chaves primárias compostas não são suportadas, e definir mais de uma propriedade como chave primária lançará uma exceção no tempo de execução. Somente a propriedade Int, String, UUID e ObjectId podem se tornar a chave primária e, ao usar o Atlas App Services, a chave primária deve ser denominada _id
. A propriedade de chave primária só pode ser mutada em objetos não gerenciados, e modificá-la em um objeto que foi adicionado a um Realm lançará uma exceção.
Opcionalmente, as propriedades podem receber um valor padrão usando a sintaxe Swift padrão. Se nenhum valor padrão for fornecido, um valor será gerado no primeiro acesso: nil
para todos os tipos opcionais, zero para tipos numéricos, false para Bool, uma string/dados vazios e um novo valor aleatório para UUID e ObjectId. As propriedades List e MutableSet não devem ser definidas definindo-as para um valor padrão de um List/MutableSet vazio. Isso funcionará, mas resultará em um desempenho pior ao acessar objeto managed por um Realm. Da mesma forma, a propriedade ObjectId não devem ser inicializadas com ObjectID.generate()
, pois isso resultará na geração de ObjectId extras e, em seguida, descartados ao ler de um Realm.
Se uma classe tiver pelo menos uma propriedade @Persisted, todas as outras propriedades serão ignoradas pelo Realm. Isso significa que eles não serão persistentes e não poderão ser usados em queries e outras operações, como classificação e agregados, que exigem uma propriedade gerenciada.
@Persisted não pode ser usado em nenhum lugar que não seja como uma propriedade em um objeto ou subclasse EmbeddedObject, e tentar usá-lo em outros locais resultará em erros de tempo de execução.
-
Declara uma propriedade que é inicializada de modo lento com o valor padrão do tipo.
Declaração
Swift
public init()
-
Declara uma propriedade cujo padrão é o valor fornecido.
Declaração
Swift
public init(wrappedValue value: Value)
-
Declaração
Swift
public init(from decoder: Decoder) throws
-
Declaração
Swift
public func encode(to encoder: Encoder) throws
-
Declara uma propriedade indexada que é inicializada preguiçosamente para o valor padrão do tipo.
Declaração
Swift
public init(indexed: Bool)
-
Declara uma propriedade indexada que padroniza para o valor fornecido.
Declaração
Swift
public init(wrappedValue value: Value, indexed: Bool)
-
Declara a propriedade de chave primária que é inicializada de forma preguiçosa para o valor padrão do tipo.
Declaração
Swift
public init(primaryKey: Bool)
-
Declara a propriedade de chave primária que padroniza para o valor fornecido.
Declaração
Swift
public init(wrappedValue value: Value, primaryKey: Bool)
-
Declara uma propriedade LinkingObjects com o nome da propriedade de origem fornecido.
- param originProperty: o nome da propriedade no Tipo de objeto de Realm de vinculação que vincula a este objeto.
Declaração
Swift
public init(originProperty: String)