RLMSet

Objective-C

@interface RLMSet<RLMObjectType> : NSObject <RLMCollection>

Swift

@_nonSendable(_assumed) class RLMSet<RLMObjectType> : NSObject, RLMCollection where RLMObjectType : AnyObject

Um tipo de dados de collection usado para armazenar objetos distintos.

Observação

RLMSet suporta o armazenamento de tipos primitivos e RLMObject . RLMSet não suporta o armazenamento de Objeto de Realm incorporados.

Propriedades

  • O número de objetos no conjunto.

    Declaração

    Objective-C

    @property (nonatomic, readonly) NSUInteger count;

    Swift

    var count: UInt { get }
  • O tipo dos objetos no conjunto.

    Declaração

    Objective-C

    @property (nonatomic, readonly) RLMPropertyType type;

    Swift

    var type: RLMPropertyType { get }
  • Indica se o objeto na collection podem ser nil.

    Declaração

    Objective-C

    @property (nonatomic, readonly, getter=isOptional) BOOL optional;

    Swift

    var isOptional: Bool { get }
  • Os objetos no RLMSet como um valor NSArray.

    Declaração

    Objective-C

    @property (nonatomic, readonly) NSArray<RLMObjectType> *_Nonnull allObjects;

    Swift

    var allObjects: [RLMObjectType] { get }
  • O nome da classe dos objetos contidos no conjunto.

    será nil se type não for RLMPropertyTypeObject.

    Declaração

    Objective-C

    @property (nonatomic, copy, readonly, nullable) NSString *objectClassName;

    Swift

    var objectClassName: String? { get }
  • O Realm que managed o conjunto. Retorna nil para um conjunto não gerenciado.

    Declaração

    Objective-C

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

    Swift

    var realm: RLMRealm? { get }
  • Indica se o conjunto não pode mais ser acessado.

    Declaração

    Objective-C

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

    Swift

    var isInvalidated: Bool { get }
  • Indica se o conjunto está congelado.

    Os conjuntos congelados são imutáveis e podem ser acessados de qualquer thread. Os conjuntos congelados são criados chamando -freeze em um conjunto ativo managed. Os conjuntos não gerenciados nunca são congelados.

    Declaração

    Objective-C

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

    Swift

    var isFrozen: Bool { get }

Adicionar, remover e substituir objetos em um conjunto

  • Adiciona um objeto ao conjunto se ele ainda não estiver presente.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)addObject:(nonnull RLMObjectType)object;

    Swift

    func add(_ object: RLMObjectType)

    Parâmetros

    object

    Um objeto do tipo contido no conjunto.

  • Adiciona uma array de objetos distintos ao conjunto.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)addObjects:(nonnull id<NSFastEnumeration>)objects;

    Swift

    func addObjects(_ objects: any NSFastEnumeration)

    Parâmetros

    objects

    Um objeto enumerável como NSArray, NSSet ou RLMResults que contém objetos da mesma classe que o conjunto.

  • Remove um determinado objeto do conjunto.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)removeObject:(nonnull RLMObjectType)object;

    Swift

    func remove(_ object: RLMObjectType)

    Parâmetros

    object

    O objeto no conjunto que você deseja remover.

  • Remove todos os objetos do set.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)removeAllObjects;

    Swift

    func removeAllObjects()
  • Esvazia o conjunto de recebimento e, em seguida, adiciona cada objeto contido em outro conjunto.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)setSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func setSet(_ set: RLMSet<RLMObjectType>)

    Parâmetros

    set

    O RLMSet cujos membros substituem o conteúdo do conjunto receptor.

  • Remove do conjunto de recebimento cada objeto que não é um membro de outro conjunto.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)intersectSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func intersect(_ set: RLMSet<RLMObjectType>)

    Parâmetros

    set

    O RLMSet com o qual realizar a interseção.

  • Remove cada objeto em outro conjunto fornecido do conjunto receptor, se presente.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)minusSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func minus(_ set: RLMSet<RLMObjectType>)

    Parâmetros

    set

    O conjunto de objetos a ser removido do conjunto de recebimento.

  • Adiciona cada objeto em outro conjunto fornecido ao conjunto receptor, se não estiver presente.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Objective-C

    - (void)unionSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func union(_ set: RLMSet<RLMObjectType>)

    Parâmetros

    set

    O conjunto de objetos a adicionar ao conjunto de recebimento.

Consultando um conjunto

  • Retorna um valor booleano que indica se pelo menos um objeto no conjunto de recebimento também está presente em outro conjunto.

    Declaração

    Objective-C

    - (BOOL)intersectsSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func intersects(_ set: RLMSet<RLMObjectType>) -> Bool

    Parâmetros

    set

    O RLMSet com o qual comparar o conjunto de recebimento.

    Valor de retorno

    YES se pelo menos um objeto no set de recebimento também estiver presente em otherSet, caso contrário, NO.

  • Retorna um valor booleano que indica se cada objeto no conjunto de recebimento também está presente em outro conjunto.

    Declaração

    Objective-C

    - (BOOL)isSubsetOfSet:(nonnull RLMSet<RLMObjectType> *)set;

    Swift

    func isSubset(of set: RLMSet<RLMObjectType>) -> Bool

    Parâmetros

    set

    O RLMSet com o qual comparar o conjunto de recebimento.

    Valor de retorno

    YES se todos os objetos do set também estiverem presentes no otherSet, caso contrário, NO.

  • Retorna um valor booleano que indica se um determinado objeto está presente no conjunto.

    Declaração

    Objective-C

    - (BOOL)containsObject:(nonnull RLMObjectType)anObject;

    Swift

    func contains(_ anObject: RLMObjectType) -> Bool

    Parâmetros

    anObject

    Um objeto para procurar no conjunto.

    Valor de retorno

    YES se anObject estiver presente no conjunto, caso contrário, NO.

  • Compara o conjunto de recebimento com outro conjunto.

    Declaração

    Objective-C

    - (BOOL)isEqualToSet:(nonnull RLMSet<RLMObjectType> *)otherSet;

    Swift

    func isEqual(to otherSet: RLMSet<RLMObjectType>) -> Bool

    Parâmetros

    otherSet

    O conjunto com o qual comparar o conjunto de recebimento.

    Valor de retorno

    YES se o conteúdo de otherSet for igual ao conteúdo do set de recebimento, caso contrário, NO.

Seccionando um conjunto

Notificações

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

    O bloco será chamado de forma assíncrona com o conjunto inicial e, em seguida, chamado novamente após cada transação de escrita que altere qualquer objeto do conjunto, quais objeto estão nos resultados ou a ordem dos objeto no conjunto.

    O parâmetro changes será nil na primeira vez que o bloco for chamado. Para cada chamada depois disso, ela conterá informações sobre quais linhas do conjunto foram adicionadas, removidas ou modificadas. Se uma transação de escrita não modificou nenhum objeto no conjunto, o bloco não será chamado. Consulte a documentação do RLMCollectionChange para obter informações sobre como as alterações são relatadas e um exemplo de atualização de um UITableView.

    O parâmetro de erro está presente apenas para compatibilidade com versões anteriores e sempre será nil.

    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. Isso pode incluir a notificação com os resultados iniciais. For example, the following code performs a write transaction immediately after adding the notification block, so there is no opportunity for the initial notification to be delivered first. Como resultado, a notificação inicial refletirá o estado do Realm após a transação de escrita.

    Person *person = [[Person allObjectsInRealm:realm] firstObject];
    NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0
    self.token = [person.dogs addNotificationBlock(RLMSet<Dog *> *dogs,
                                                   RLMCollectionChange *changes,
                                                   NSError *error) {
        // Only fired once for the example
        NSLog(@"dogs.count: %zu", dogs.count) // => 1
    }];
    [realm transactionWithBlock:^{
        Dog *dog = [[Dog alloc] init];
        dog.name = @"Rex";
        [person.dogs addObject:dog];
    }];
    // end of run loop execution context
    

    Você deve reter o token retornado pelo tempo que quiser que as atualizações continuem sendo enviadas ao bloco. Para parar de receber atualizações, ligue para -invalidate no token.

    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.

    Aviso

    Este método só pode ser chamado em um conjunto gerenciado não congelado.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                          RLMCollectionChange *_Nullable, NSError *_Nullable))block;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void) -> RLMNotificationToken

    Parâmetros

    block

    O bloco a ser chamado cada vez que o conjunto for alterado.

    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 conjunto for alterado.

    O bloco será chamado de forma assíncrona com o conjunto inicial e, em seguida, chamado novamente após cada transação de escrita que altere qualquer objeto do conjunto, quais objeto estão nos resultados ou a ordem dos objeto no conjunto.

    O parâmetro changes será nil na primeira vez que o bloco for chamado. Para cada chamada depois disso, ela conterá informações sobre quais linhas do conjunto foram adicionadas, removidas ou modificadas. Se uma transação de escrita não modificou nenhum objeto no conjunto, o bloco não será chamado. Consulte a documentação do RLMCollectionChange para obter informações sobre como as alterações são relatadas e um exemplo de atualização de um UITableView.

    O parâmetro de erro está presente apenas para compatibilidade com versões anteriores e sempre será nil.

    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.

    Você deve reter o token retornado pelo tempo que quiser que as atualizações continuem sendo enviadas ao bloco. Para parar de receber atualizações, ligue para -invalidate no token.

    Aviso

    Este método não pode ser chamado quando o Realm que o contém estiver somente para leitura ou congelado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                       queue:(nullable dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, 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 conjunto for alterado.

    O bloco será chamado de forma assíncrona com o conjunto inicial e, em seguida, chamado novamente após cada transação de escrita que altere qualquer objeto do conjunto, quais objeto estão nos resultados ou a ordem dos objeto no conjunto.

    O parâmetro changes será nil na primeira vez que o bloco for chamado. Para cada chamada depois disso, ela conterá informações sobre quais linhas do conjunto foram adicionadas, removidas ou modificadas. Se uma transação de escrita não modificou nenhum objeto no conjunto, o bloco não será chamado. Consulte a documentação do RLMCollectionChange para obter informações sobre como as alterações são relatadas e um exemplo de atualização de um UITableView.

    O parâmetro de erro está presente apenas para compatibilidade com versões anteriores e sempre será nil.

    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.

    Você deve reter o token retornado pelo tempo que quiser que as atualizações continuem sendo enviadas ao bloco. Para parar de receber atualizações, ligue para -invalidate no token.

    Aviso

    Este método não pode ser chamado quando o Realm que o contém estiver somente para leitura ou congelado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths
                       queue:(nullable dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, 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 conjunto for alterado.

    O bloco será chamado de forma assíncrona com o conjunto inicial e, em seguida, chamado novamente após cada transação de escrita que altere qualquer objeto do conjunto, quais objeto estão nos resultados ou a ordem dos objeto no conjunto.

    O parâmetro changes será nil na primeira vez que o bloco for chamado. Para cada chamada depois disso, ela conterá informações sobre quais linhas do conjunto foram adicionadas, removidas ou modificadas. Se uma transação de escrita não modificou nenhum objeto no conjunto, o bloco não será chamado. Consulte a documentação do RLMCollectionChange para obter informações sobre como as alterações são relatadas e um exemplo de atualização de um UITableView.

    O parâmetro de erro está presente apenas para compatibilidade com versões anteriores e sempre será nil.

    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. Isso pode incluir a notificação com os resultados iniciais. For example, the following code performs a write transaction immediately after adding the notification block, so there is no opportunity for the initial notification to be delivered first. Como resultado, a notificação inicial refletirá o estado do Realm após a transação de escrita.

    Você deve reter o token retornado pelo tempo que quiser que as atualizações continuem sendo enviadas ao bloco. Para parar de receber atualizações, ligue para -invalidate no token.

    Aviso

    Este método não pode ser chamado quando o Realm que o contém estiver somente para leitura ou congelado.

    Aviso

    A fila deve ser uma fila serial.

    Declaração

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, 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.

Agregando valores de propriedade

  • Retorna o valor mínimo (mais baixo) da propriedade fornecida entre todos os objetos no conjunto.

    NSNumber *min = [object.setProperty minOfProperty:@"age"];
    

    Aviso

    Você não pode usar este método nas propriedades RLMObject, RLMArray, RLMSet e NSData .

    Declaração

    Objective-C

    - (nullable id)minOfProperty:(nonnull NSString *)property;

    Swift

    func min(ofProperty property: String) -> Any?

    Parâmetros

    property

    A propriedade cujo valor mínimo é desejado. Somente propriedades dos tipos int, float, double e NSDate são suportadas.

    Valor de retorno

    O valor mínimo da propriedade ou nil se o conjunto estiver vazio.

  • Retorna o valor máximo (mais alto) da propriedade fornecida entre todos os objetos no conjunto.

    NSNumber *max = [object.setProperty maxOfProperty:@"age"];
    

    Aviso

    Você não pode usar este método nas propriedades RLMObject, RLMArray, RLMSet e NSData .

    Declaração

    Objective-C

    - (nullable id)maxOfProperty:(nonnull NSString *)property;

    Swift

    func max(ofProperty property: String) -> Any?

    Parâmetros

    property

    A propriedade cujo valor máximo é desejado. Somente propriedades dos tipos int, float, double e NSDate são suportadas.

    Valor de retorno

    O valor máximo da propriedade ou nil se o conjunto estiver vazio.

  • Retorna a soma de valores distintos de uma determinada propriedade sobre todos os objetos no conjunto.

    NSNumber *sum = [object.setProperty sumOfProperty:@"age"];
    

    Aviso

    Você não pode usar este método nas propriedades RLMObject, RLMArray, RLMSet andNSData.

    Declaração

    Objective-C

    - (nonnull NSNumber *)sumOfProperty:(nonnull NSString *)property;

    Swift

    func sum(ofProperty property: String) -> NSNumber

    Parâmetros

    property

    A propriedade cujos valores devem ser somados. Somente propriedades dos tipos int, float e double são suportadas.

    Valor de retorno

    A soma da propriedade fornecida.

  • Retorna o valor médio de uma determinada propriedade sobre os objetos no conjunto.

    NSNumber *average = [object.setProperty averageOfProperty:@"age"];
    

    Aviso

    Você não pode usar este método nas propriedades RLMObject, RLMSet, RLMArray e NSData .

    Declaração

    Objective-C

    - (nullable NSNumber *)averageOfProperty:(nonnull NSString *)property;

    Swift

    func average(ofProperty property: String) -> NSNumber?

    Parâmetros

    property

    A propriedade cujo valor médio deve ser calculado. Somente propriedades dos tipos int, float e double são suportadas.

    Valor de retorno

    O valor médio da propriedade fornecida ou nil se o conjunto estiver vazio.

Congelar

  • Retorna um snapshot congelado (imutável) deste conjunto.

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

    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.

    Aviso

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

    Aviso

    Manter um conjunto 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 RLMRealmConfiguration.maximumNumberOfActiveVersions para obter mais informações.

    Declaração

    Objective-C

    - (nonnull instancetype)freeze;

    Swift

    func freeze() -> Self
  • Retorna uma versão ativa dessa collection congelada.

    Esse método resolve uma referência a uma cópia ativa da mesma collection congelada. Se for chamado em uma coleção ativa, retornará a si mesmo.

    Declaração

    Objective-C

    - (nonnull instancetype)thaw;

    Swift

    func thaw() -> Self

Métodos indisponíveis

  • Indisponível

    Os RLMSets não podem ser criados diretamente

    -[RLMSet init] não está disponível porque RLMSets não pode ser criado diretamente. As propriedades RLMSet em RLMObjects são criadas preguiçosamente quando acessadas.

    Declaração

    Objective-C

    - (nonnull instancetype)init;
  • Indisponível

    O RLMSet não pode ser criado diretamente

    +[RLMSet new] não está disponível porque RLMSets não pode ser criado diretamente. As propriedades RLMSet em RLMObjects são criadas preguiçosamente quando acessadas.

    Declaração

    Objective-C

    + (nonnull instancetype)new;