EmbeddedObject

@objc(RealmSwiftEmbeddedObject)
open class EmbeddedObject : RLMObjectBase, RealmCollectionValue
extension EmbeddedObject: ThreadConfined

EmbeddedObject é uma classe base usada para definir objetos de modelo de Realm incorporados.

Objetos incorporados funcionam da mesma forma que objetos normais, mas são de propriedade de um único objeto pai (que por sua vez pode estar incorporado). Ao contrário dos objetos normais de nível superior, os objetos incorporados não podem ser criados ou adicionados diretamente a um Realm. Em vez disso, eles só podem ser criados como parte de um objeto pai ou atribuindo um objeto não gerenciado à propriedade de um objeto pai. Objeto incorporado são excluídos automaticamente quando o objeto é excluído ou quando o objeto é modificado para não ponto mais para o objeto incorporado, reatribuindo uma propriedade de objeto ou removendo o objeto incorporado da lista que o contém.

Objeto incorporado só podem ter um único objeto vinculado a eles, e a tentativa de vinculação a um managed objeto incorporado existente lançará uma exceção.

Os tipos de propriedades suportados no EmbeddedObject são os mesmos do Object, exceto pelo fato de que os objetos incorporados não podem ser vinculados a objetos de nível superior, portanto, as propriedades Object e List<Object> não são suportadas (EmbeddedObject e List<EmbeddedObject> são).

Objeto incorporado não pode ter chave primária ou propriedade indexada.

class Owner: Object {
    @objc dynamic var name: String = ""
    let dogs = List<Dog>()
}
class Dog: EmbeddedObject {
    @objc dynamic var name: String = ""
    @objc dynamic var adopted: Bool = false
    let owner = LinkingObjects(fromType: Owner.self, property: "dogs")
}

Inicializadores

  • Cria uma instância não gerenciada de um objeto de Realm.

    Um objeto incorporado unmanaged pode ser adicionado a um Realm atribuindo-o a uma propriedade de um objeto managed ou adicionando-o a uma managed List.

    Declaração

    Swift

    public override required init()
  • Cria uma instância não gerenciada de um objeto de Realm.

    O argumento value é utilizado para preencher o objeto. Pode ser um objeto compatível com codificação key-value, uma array ou dicionário retornado dos métodos em NSJSONSerialization ou um Array contendo um elemento para cada propriedade gerenciada. Uma exceção será lançada se alguma propriedade obrigatória não estiver presente e essas propriedades não tiverem sido definidas com valores padrão.

    Ao passar um Array como argumento value , todas as propriedades devem estar presentes, válidas e na mesma ordem que as propriedades definidas no modelo.

    Um objeto incorporado unmanaged pode ser adicionado a um Realm atribuindo-o a uma propriedade de um objeto managed ou adicionando-o a uma managed List.

    Declaração

    Swift

    public convenience init(value: Any)

    Parâmetros

    value

    O valor utilizado para preencher o objeto.

Propriedades

  • O Realm que managed o objeto ou nil se o objeto não for gerenciado.

    Declaração

    Swift

    public var realm: Realm? { get }
  • O esquema de objetos que lista as propriedade managed do objeto.

    Declaração

    Swift

    public var objectSchema: ObjectSchema { get }
  • Indica se o objeto não pode mais ser acessado porque agora é inválido.

    Um objeto não poderá mais ser acessado se o objeto tiver sido excluído do Realm que managed ou se invalidate() for chamado nesse Realm.

    Declaração

    Swift

    public override final var isInvalidated: Bool { get }
  • Uma descrição legível por humanos do objeto.

    Declaração

    Swift

    open override var description: String { get }

Personalização de objetos

  • Substitua este método para especificar os nomes das propriedades a serem ignoradas. Essas propriedade não serão managed pelo Realm que managed o objeto.

    Declaração

    Swift

    @objc
    open class func ignoredProperties() -> [String]

    Valor de retorno

    Uma array de nomes de propriedades a serem ignorados.

Codificação e assinatura de valor-chave

  • Retorna ou define o valor da propriedade com o nome fornecido.

    Declaração

    Swift

    @objc
    open subscript(key: String) -> Any? { get set }

Notificações

  • Registra um bloco a ser chamado cada vez que o objeto for alterado.

    O bloqueio será chamado de forma assíncrona após cada transação de escrita que exclua o objeto ou modifique qualquer uma das propriedades managed do objeto, incluindo autoatribuições que definem uma propriedade ao seu valor existente.

    Para transações de gravação realizadas em diferentes threads ou em processos diferentes, o bloco será chamado quando o Realm de gerenciamento for (auto)atualizado para uma versão que inclua as alterações, enquanto para transações de gravação local, ele será chamado em algum momento no futuro após o a transação de escrita está confirmada.

    As notificações são entregues por meio do loop de eventos padrão e, portanto, não podem ser entregues enquanto o loop de eventos estiver bloqueado por outra atividade. Quando as notificações não podem ser entregues instantaneamente, várias notificações podem ser agrupadas em uma única notificação.

    Ao contrário de List e Results, não há chamada de resposta "inicial" feita após você adicionar um novo bloco de notificação.

    Somente objeto managed por um Realm podem ser observados dessa forma. Você deve reter o token retornado pelo tempo que desejar que as atualizações sejam enviadas ao bloco. Para parar de receber atualizações, ligue para invalidate() no token.

    É seguro capturar uma forte referência ao objeto observado dentro do bloco de chamada de resposta. Não há ciclo de retenção devido ao fato de que a chamada de resposta é retida pelo token retornado e não pelo próprio objeto.

    Aviso

    Este método não pode ser chamado durante uma transação de escrita, ou quando o Realm que o contém for somente leitura.

    Declaração

    Swift

    public func observe<T: RLMObjectBase>(on queue: DispatchQueue? = nil,
                                          _ block: @escaping (ObjectChange<T>) -> Void) -> NotificationToken

    Parâmetros

    queue

    A fila de despacho em série para receber a notificação. Se nil, as notificações são entregues ao thread atual.

    block

    O bloco a ser chamado com informações sobre as alterações no objeto.

    Valor de retorno

    Um token que deve ser mantido pelo tempo que você quiser que as atualizações sejam entregues.

Comparação

  • Retorna se dois Objeto de Realm são iguais.

    O objeto são considerados os mesmos se e somente se forem managed pelo mesmo Realm e ponto para o mesmo objeto subjacente no reconhecimento de data center.

    Observação

    A comparação de igualdade é implementada por isEqual(_:) . Se o tipo de objeto for definido com uma chave primária, o isEqual(_:) se comportará de forma idêntica a este método. Se o Tipo de objeto de Realm não for definido com uma chave primária, isEqual(_:) utilizará o comportamento NSObject de comparar a identidade do objeto. Esse método pode ser usado para comparar dois objetos para igualdade de banco de dados, independentemente de seu tipo de objeto definir ou não uma chave primária.

    Declaração

    Swift

    public func isSameObject(as object: EmbeddedObject?) -> Bool

    Parâmetros

    object

    O objeto com o qual comparar o receptor.

  • Indica se este objeto está congelado.

    Declaração

    Swift

    public var isFrozen: Bool { get }
  • Retorna um snapshot congelado (imutável) deste objeto.

    A cópia congelada é um objeto imutável que contém os mesmos dados que este objeto contém atualmente, mas não será atualizado quando forem feitas gravações no Realm que a contém. Ao contrário dos objetos ativos, os objetos congelados podem ser acessados de qualquer thread.

    Aviso

    Manter um objeto congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. Consulte Realm.Configuration.maximumNumberOfActiveVersions para obter mais informações.

    Aviso

    Este método só pode ser chamado em um managed objeto.

    Declaração

    Swift

    public func freeze() -> Self