Aulas

As seguintes classes estão disponíveis globalmente.

  • 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 mais

    Declaração

    Swift

    @objc(RealmSwiftDecimal128)
    public final class Decimal128 : RLMDecimal128, Decodable, @unchecked Sendable
    extension Decimal128: BSON
    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:

    1. Um carimbo de data/hora de 4 bytes medindo o tempo de criação do ObjectId em segundos desde a Era UNIX.
    2. Um valor aleatório de 5 bytes
    3. 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 mais

    Declaração

    Swift

    @objc(RealmSwiftObjectId)
    public final class ObjectId : RLMObjectId, Decodable, @unchecked Sendable
    extension ObjectId: BSON
    extension ObjectId: Encodable
    extension ObjectId: Comparable
    extension ObjectId: _RealmCollectionValueInsideOptional
  • List é o tipo de container no Realm usado para definir relacionamento para muitos.

    Como o Array do Swift, o List é um tipo genérico parametrizado de acordo com o tipo que armazena. Pode ser uma subclasse Object ou um dos seguintes tipos: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128 e ObjectId (e suas versões opcionais)

    Ao contrário das collection nativas do Swift, os Lists 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 Results<Element>.

    Veja mais

    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, o MutableSet é um tipo genérico parametrizado de acordo com o tipo que armazena. Pode ser uma subclasse Object ou um dos seguintes tipos: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128 e ObjectId (e suas versões opcionais)

    Ao contrário das collection nativas do Swift, os MutableSets 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 Results<Element>.

    Veja mais

    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
  • Map

    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)

    Observação

    Versões opcionais dos tipos acima, exceto Object , só são suportadas em Realms não sincronizados.

    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 Maps é 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 Results<Value>.

    Veja mais

    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
  • Uma instância RealmOptional representa um valor opcional para tipos que não podem ser declarados diretamente como @objc no Swift, como Int, Float, Double e Bool.

    Para alterar o valor subjacente armazenado por uma instância do RealmOptional , altere a propriedade value da instância.

    Veja mais

    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

ProjeçãoObservável

  • Projection seja um modelo leve do Realm Object ou EmbeddedObject original . Você pode usar Projection 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 de Projectionterá o mesmo nome e tipo que o objeto original. Consulte PersonProjection.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 do Object projetado . Consulte PersonProjection.lastNameCaps e PersonProjection.homeCity.
    • Collection mapping - List e MutableSetde Objects ou EmbeddedObjects podem ser projetados como uma collection de valores primitivos. Consulte PersonProjection.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 o Projection. Você ainda pode acessar o Object ou EmbeddedObject 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. Each Object or EmbeddedObject 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 ou init(projecting:) da classe da projeção:

    let projections = realm.object(PersonProjection.self)
    let personObject = realm.create(Person.self)
    let singleProjection = PersonProjection(projecting: personObject)
    
    Veja mais

    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 propriedade value da instância.

    Observação

    Um RealmProperty não deve ser declarado como @objc dynamic em um Objeto de Realm. Em vez disso, use let .
    Veja mais

    Declaração

    Swift

    public final class RealmProperty<Value> : RLMSwiftValueStorage where Value : RealmPropertyType
    extension RealmProperty: Equatable where Value: Equatable
    extension RealmProperty: Codable where Value: Codable

ThreadSafe PropertyWrapper

  • 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 um ThreadSafeReference 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.

    Declaração

    Swift

    @propertyWrapper
    public final class ThreadSafe<T> where T : ThreadConfined
    extension ThreadSafe: @unchecked Sendable