Aulas
As seguintes classes estão disponíveis globalmente.
-
List
é o tipo de container no Realm usado para definir relacionamento para muitos.Como o
Array
do Swift, oList
é um tipo genérico parametrizado de acordo com o tipo que armazena. Pode ser uma subclasseObject
ou um dos seguintes tipos:Bool
,Int
,Int8
,Int16
,Int32
,Int64
,Float
,Double
,String
,Data
,Date
,Decimal128
eObjectId
(e suas versões opcionais)Ao contrário das collection nativas do Swift, os
List
s são tipos de referência e só são imutáveis se o Realm que os managed for aberto como somente leitura.As listas podem ser filtradas e classificadas com os mesmos predicados de
Veja maisResults<Element>
.Declaração
Swift
public final class List<Element> : RLMSwiftCollectionBase, RealmCollectionImpl where Element : RealmCollectionValue
extension List: ObservableObject, RealmSubscribable
extension List: MutableCollection
extension List: Decodable where Element: Decodable
extension List: Encodable where Element: Encodable
-
MutableSet
é o tipo de container no Realm usado para definir relacionamento para muitos com valores distintos como objeto.Como o
Set
do Swift, oMutableSet
é um tipo genérico parametrizado de acordo com o tipo que armazena. Pode ser uma subclasseObject
ou um dos seguintes tipos:Bool
,Int
,Int8
,Int16
,Int32
,Int64
,Float
,Double
,String
,Data
,Date
,Decimal128
eObjectId
(e suas versões opcionais)Ao contrário das collection nativas do Swift, os
MutableSet
s são tipos de referência e só são imutáveis se o Realm que os managed for aberto como somente leitura.Os MutableSets podem ser filtrados e classificados com os mesmos predicados de
Veja maisResults<Element>
.Declaração
Swift
public final class MutableSet<Element> : RLMSwiftCollectionBase, RealmCollectionImpl where Element : RealmCollectionValue
extension MutableSet: ObservableObject, RealmSubscribable
extension MutableSet: Decodable where Element: Decodable
extension MutableSet: Encodable where Element: Encodable
-
O Map é um container de armazenamento de valor chave usado para armazenar tipos de Realm suportados.
O mapa é um tipo genérico parametrizado no tipo que armazena. Pode ser uma subclasse de objetos ou um dos seguintes tipos: Bool, Int, Int8, Int16, Int32, Int64, Flutuante, Duplo, String, Dados, Data, Decimal128 e ObjectId (e suas versões opcionais)
O mapa só suporta
String
como uma chave. O Realm não permite o uso de.
ou$
caracteres em uma chave de dicionário.Ao contrário da collection nativa do Swift, o
Map
s é um tipo de referência e só é imutável se o Realm que os managed for aberto como somente leitura.Um Mapa pode ser filtrado e ordenado com os mesmos predicados do
Veja maisResults<Value>
.Declaração
Swift
public final class Map<Key, Value> : RLMSwiftCollectionBase where Key : _MapKey, Value : RealmCollectionValue
extension Map: ObservableObject, RealmSubscribable
extension Map: Sequence
extension Map: RealmKeyedCollection
extension Map: Decodable where Key: Decodable, Value: Decodable
extension Map: Encodable where Key: Encodable, Value: Encodable
-
Um número de ponto flutuante decimal IEEE 754-2008 de 128 bits.
Esse tipo é semelhante ao tipo Decimal integrado do Swift, mas aloca bits de forma diferente, resultando em uma faixa representável diferente. (NS)Decimal armazena um significando de até 38 dígitos e um expoente de -128 a 127, enquanto esse tipo armazena até 34 dígitos de significando e um expoente de -6143 a 6144.
Veja maisDeclaração
Swift
@objc(RealmSwiftDecimal128) public final class Decimal128 : RLMDecimal128, Decodable, @unchecked Sendable
extension Decimal128: Encodable
extension Decimal128: ExpressibleByIntegerLiteral
extension Decimal128: ExpressibleByFloatLiteral
extension Decimal128: ExpressibleByStringLiteral
extension Decimal128: Comparable
extension Decimal128: Numeric
extension Decimal128: _QueryNumeric
extension Decimal128: _RealmCollectionValueInsideOptional
extension Decimal128: MinMaxType
extension Decimal128: AddableType
extension Decimal128: SortableType
-
Um identificador de objeto exclusivo de 12 bytes (provavelmente).
Os ObjectIds são semelhantes a um GUID ou UUID e podem ser usados para identificar exclusivamente objetos sem um gerador de ID centralizado. Um ObjectId consiste em:
- Um carimbo de data/hora de 4 bytes medindo o tempo de criação do ObjectId em segundos desde a Era UNIX.
- Um valor aleatório de 5 bytes
- Um contador de 3 bytes, inicializado para um valor aleatório.
Os ObjectIds devem ser gerados rapidamente. A classificação por um campo ObjectId normalmente resultará na classificação dos objetos na ordem de criação.
Veja maisDeclaração
Swift
@objc(RealmSwiftObjectId) public final class ObjectId : RLMObjectId, Decodable, @unchecked Sendable
extension ObjectId: Encodable
extension ObjectId: Comparable
extension ObjectId: _RealmCollectionValueInsideOptional
-
Uma instância
RealmOptional
representa um valor opcional para tipos que não podem ser declarados diretamente como@objc
no Swift, comoInt
,Float
,Double
eBool
.Para alterar o valor subjacente armazenado por uma instância do
Veja maisRealmOptional
, altere a propriedadevalue
da instância.Declaração
Swift
@available(*, deprecated, renamed: "RealmProperty", message: "RealmOptional<T> has been deprecated, use RealmProperty<T?> instead.") public final class RealmOptional<Value> : RLMSwiftValueStorage where Value : RealmOptionalType
extension RealmOptional: Equatable where Value: Equatable
extension RealmOptional: Codable where Value: Codable, Value: _RealmSchemaDiscoverable
-
Projection
seja um modelo leve do RealmObject
ouEmbeddedObject
original . Você pode usarProjection
como um modelo de visualização para minimizar o código padrão.Exemplo de uso:
public class Person: Object { @Persisted var firstName = "" @Persisted var lastName = "" @Persisted var address: Address? @Persisted var friends: List<Person> @Persisted var reviews: List<String> } public class Address: EmbeddedObject { @Persisted var city: String = "" @Persisted var country = "" } class PersonProjection: Projection<Person> { @Projected(\Person.firstName) var firstName @Projected(\Person.lastName.localizedUppercase) var lastNameCaps @Projected(\Person.address.city) var homeCity @Projected(\Person.friends.projectTo.firstName) var friendsFirstName: ProjectedCollection<String> }
### Tipos de propriedade suportados
A projeção pode transformar as propriedades originais do
@Persisted
de várias maneiras:Passthrough
- A propriedade deProjection
terá o mesmo nome e tipo que o objeto original. ConsultePersonProjection.firstName
.Rename
- A propriedade da projeção terá o mesmo tipo do objeto original, apenas com o novo nome.Keypath resolution
- você pode acessar certas propriedades doObject
projetado . ConsultePersonProjection.lastNameCaps
ePersonProjection.homeCity
.Collection mapping
-List
eMutableSet
deObject
s ouEmbeddedObject
s podem ser projetados como uma collection de valores primitivos. ConsultePersonProjection.friendsFirstName
.Exclusion
- todas as propriedade do Objeto de Realm original que não foram definidas no modelo de projeção serão excluídas da projeção. Quaisquer alterações ocorridas na propriedade não trigger uma notificação de alteração para oProjection
. Você ainda pode acessar oObject
ouEmbeddedObject
original e observar as notificações diretamente nele.
Observação
cada propriedade@Persisted
pode ser@Projected
de maneiras diferentes na mesma classe de projeção. EachObject
orEmbeddedObject
can have sevaral projections of same or different classes at once.Consultando
Você pode recuperar todas as projeção de um determinado tipo de um Realm chamando o
objects(_:)
do Realm ouinit(projecting:)
da classe da projeção:
Veja maislet projections = realm.object(PersonProjection.self) let personObject = realm.create(Person.self) let singleProjection = PersonProjection(projecting: personObject)
Declaração
Swift
open class Projection<Root> : RealmCollectionValue, ProjectionObservable where Root : RLMObjectBase, Root : RealmCollectionValue, Root : ThreadConfined
extension Projection: KeypathSortable
extension Projection: ThreadConfined where Root: ThreadConfined
extension Projection: ObservableObject, RealmSubscribable where Root: ThreadConfined
-
Uma instância
RealmProperty
representa um valor polimórfico para tipos suportados.Para alterar o valor subjacente armazenado por uma instância do
RealmProperty
, altere a propriedadevalue
da instância.Observação
UmRealmProperty
não deve ser declarado como@objc dynamic
em um Objeto de Realm. Em vez disso, uselet
.Declaração
Swift
public final class RealmProperty<Value> : RLMSwiftValueStorage where Value : RealmPropertyType
extension RealmProperty: Equatable where Value: Equatable
extension RealmProperty: Codable where Value: Codable
-
Um tipo de wrapper de propriedade que pode ser passado entre threads.
Uma propriedade
@ThreadSafe
contém uma referência segura de thread para o valor envolto subjacente. Esta referência é resolvida para o thread no qual o valor envolto é acessado. Uma nova referência segura de thread é criada cada vez que a propriedade é acessada.Aviso
Este invólucro de propriedades não deve ser usado para propriedades em objetos de longa duração. As propriedades
@ThreadSafe
contêm umThreadSafeReference
que pode fixar a versão de origem do Realm em uso. Isso significa que esse wrapper de propriedade é mais adequado para argumentos de função e variáveis locais que são capturados por um bloco despachado de forma assíncrona.Veja
Veja
Declaração
Swift
@propertyWrapper public final class ThreadSafe<T> where T : ThreadConfined
extension ThreadSafe: @unchecked Sendable