RLMEmbeddedObject

Objective-C

@interface RLMEmbeddedObject : RLMObjectBase <RLMThreadConfined>

Swift

@_nonSendable(_assumed) class RLMEmbeddedObject : RLMObjectBase, RLMThreadConfined

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

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. Objetos incorporados são excluídos automaticamente quando o objeto pai é excluído ou quando o pai é modificado para não apontar mais para o objeto incorporado, reatribuindo uma propriedade RLMObject ou removendo o objeto incorporado da matriz 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 RLMEmbeddedObject são os mesmos do RLMObject, exceto pelo fato de que os objetos incorporados não podem ser vinculados a objetos de nível superior, portanto, as propriedades RLMObject e RLMArray<RLMObject> não são suportadas (RLMEmbeddedObject e RLMArray<RLMEmbeddedObject> são).

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

Criando e inicializando objetos

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

    Objeto incorporado não managed podem ser adicionados a um Realm atribuindo-os a uma propriedade de objeto de um Objeto de Realm managed ou adicionando-os a um RLMArray managed.

    Declaração

    Objective-C

    - (nonnull instancetype)init;

    Swift

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

    Passe em uma instância NSArray ou NSDictionary para definir os valores das propriedades do objeto.

    Objeto incorporado não managed podem ser adicionados a um Realm atribuindo-os a uma propriedade de objeto de um Objeto de Realm managed ou adicionando-os a um RLMArray managed.

    Declaração

    Objective-C

    - (nonnull instancetype)initWithValue:(nonnull id)value;

    Swift

    convenience init(value: Any)
  • Retorna o nome da classe para uma subclasse de Objeto de Realm.

    Aviso

    Não substitua. O Realm depende deste método retornando o nome exato da classe.

    Declaração

    Objective-C

    + (nonnull NSString *)className;

    Swift

    class func className() -> String

    Valor de retorno

    O nome da classe de modelo.

Propriedades

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

    Declaração

    Objective-C

    @property (nonatomic, readonly, nullable) RLMRealm *realm;

    Swift

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

    Declaração

    Objective-C

    @property (nonatomic, readonly) RLMObjectSchema *_Nonnull objectSchema;

    Swift

    var objectSchema: RLMObjectSchema { 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

    Objective-C

    @property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated;

    Swift

    var isInvalidated: Bool { get }
  • Indica se este objeto está congelado.

    Declaração

    Objective-C

    @property (nonatomic, readonly, getter=isFrozen) BOOL frozen;

    Swift

    var isFrozen: Bool { get }

Personalizando seus objetos

  • Substitua este método para especificar os valores padrão a serem utilizados para cada propriedade.

    Declaração

    Objective-C

    + (nullable NSDictionary *)defaultPropertyValues;

    Swift

    class func defaultPropertyValues() -> [AnyHashable : Any]?

    Valor de retorno

    Uma propriedade de mapeamento de dicionário nomeia para seus valores padrão.

  • 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

    Objective-C

    + (nullable NSArray<NSString *> *)ignoredProperties;

    Swift

    class func ignoredProperties() -> [String]?

    Valor de retorno

    Uma array de nomes de propriedades a serem ignorados.

  • Substitua este método para especificar os nomes das propriedades que não são opcionais (ou seja, não pode ser atribuído a um valor nil ).

    Por padrão, todas as propriedades de um tipo cujos valores podem ser definidos para nil são consideradas propriedades opcionais. Para exigir que um objeto em um Realm sempre armazene um valor nãonil para uma propriedade, adicione o nome da propriedade à array retornada por esse método.

    As propriedades do tipo RLMEmbeddedObject não podem ser não opcionais. As propriedades de matriz e NSNumber podem ser não opcionais, mas não há razão para isso: as matrizes não suportam o armazenamento de nil e, se você quiser um número não opcional, deve usar o tipo primitivo .

    Declaração

    Objective-C

    + (nonnull NSArray<NSString *> *)requiredProperties;

    Swift

    class func requiredProperties() -> [String]

    Valor de retorno

    Uma array de nomes de propriedades que são necessários.

  • Substitua este método para fornecer informações relacionadas a propriedades que contêm objetos de vinculação.

    Cada propriedade do tipo RLMLinkingObjects deve ter uma chave no dicionário retornado por este método que consiste no nome da propriedade. O valor correspondente deve ser uma instância de RLMPropertyDescriptor que descreve a classe e a propriedade à qual a propriedade está vinculada.

    return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] };
    

    Declaração

    Objective-C

    + (nonnull NSDictionary<NSString *, RLMPropertyDescriptor *> *)
        linkingObjectsProperties;

    Swift

    class func linkingObjectsProperties() -> [String : RLMPropertyDescriptor]

    Valor de retorno

    Uma propriedade de mapeamento de dicionário nomeia para instâncias de RLMPropertyDescriptor .

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 diferentes processos, 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 RLMArray e RLMResults, 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, quando o Realm que o contém é somente para leitura ou em um objeto não gerenciado.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull RLMObjectChangeBlock)block;

    Swift

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock) -> RLMNotificationToken

    Parâmetros

    block

    O bloco a ser chamado sempre que ocorre uma alteração.

    Valor de retorno

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

  • 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 na fila fornecida. Se a fila estiver bloqueada e as notificações não puderem ser entregues instantaneamente, várias notificações poderão ser agrupadas em uma única notificação.

    Ao contrário de RLMArray e RLMResults, 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, quando o Realm que o contém é somente para leitura ou em um objeto não gerenciado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                       queue:(nonnull dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, queue: dispatch_queue_t) -> RLMNotificationToken

    Parâmetros

    block

    O bloco a ser chamado sempre que ocorre uma alteração.

    queue

    A fila em série para a qual entregar notificações.

    Valor de retorno

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

  • 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 na fila fornecida. Se a fila estiver bloqueada e as notificações não puderem ser entregues instantaneamente, várias notificações poderão ser agrupadas em uma única notificação.

    Ao contrário de RLMArray e RLMResults, 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, quando o Realm que o contém é somente para leitura ou em um objeto não gerenciado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths
                       queue:(nonnull dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String], queue: dispatch_queue_t) -> RLMNotificationToken

    Parâmetros

    block

    O bloco a ser chamado sempre que ocorre uma alteração.

    keyPaths

    O bloco será chamado para alterações que ocorrem nesses keypaths. Se nenhum caminho de chave for fornecido, notificações serão entregues para cada caminho de chave de propriedade.

    queue

    A fila em série para a qual entregar notificações.

    Valor de retorno

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

  • 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 na fila fornecida. Se a fila estiver bloqueada e as notificações não puderem ser entregues instantaneamente, várias notificações poderão ser agrupadas em uma única notificação.

    Ao contrário de RLMArray e RLMResults, 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, quando o Realm que o contém é somente para leitura ou em um objeto não gerenciado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths;

    Swift

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String]) -> RLMNotificationToken

    Parâmetros

    block

    O bloco a ser chamado sempre que ocorre uma alteração.

    keyPaths

    O bloco será chamado para alterações que ocorrem nesses keypaths. Se nenhum caminho de chave for fornecido, notificações serão entregues para cada caminho de chave de propriedade.

    Valor de retorno

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

Outros métodos de instância

  • Retorna YES se outra instância de Objeto de Realm ponto para o mesmo objeto que o receptor no Realm que gerencia o receptor.

    Para objeto congelados e Tipo de objeto de Realm com uma chave primária, isEqual: é substituído para usar a mesma lógica que este método (junto com uma implementação correspondente para hash). Objeto não congelados sem chave primária usam a identidade de ponteiro para isEqual: e hash.

    Declaração

    Objective-C

    - (BOOL)isEqualToObject:(nonnull RLMEmbeddedObject *)object;

    Swift

    func isEqual(to object: RLMEmbeddedObject) -> Bool

    Parâmetros

    object

    O objeto com o qual comparar o receptor.

    Valor de retorno

    Se o objeto representa o mesmo objeto que o receptor.

  • 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

    Objective-C

    - (nonnull instancetype)freeze;

    Swift

    func freeze() -> Self
  • Retorna uma referência ativa (mutável) deste objeto.

    Esse método cria um acessador gerenciado para uma cópia ativa do mesmo objeto congelado. Retornará a si mesmo se for chamado em um objeto já ativo.

    Declaração

    Objective-C

    - (nonnull instancetype)thaw;

    Swift

    func thaw() -> Self