RLMDictionary
Objective-C
@interface RLMDictionary<RLMKeyType, RLMObjectType> : NSObject <RLMCollection>
Swift
@_nonSendable(_assumed) class RLMDictionary<RLMKeyType, RLMObjectType> : NSObject, RLMCollection where RLMKeyType : AnyObject, RLMObjectType : AnyObject
RLMDictionary
é um tipo de contêiner no Realm que representa uma coleção dinâmica de pares de valores-chave.
Ao contrário de NSDictionary
, RLMDictionary
s contêm um único tipo de chave e valor. Isso é chamado nestes Docs como o "type" e "keyType" do dicionário.
Ao declarar uma propriedade RLMDictionary
, o tipo de objeto e keyType devem ser marcados como em conformidade com um protocolo com o mesmo nome dos objetos que ele deve conter.
RLM_COLLECTION_TYPE(ObjectType)
...
@property RLMDictionary<NSString *, ObjectType *><RLMString, ObjectType> *objectTypeDictionary;
RLMDictionary
s podem ser consultados com os mesmos predicados que RLMObject
e RLMResult
s.
RLMDictionary
Os s não podem ser criados diretamente. As propriedades de RLMDictionary
em RLMObject
s são criadas preguiçosamente quando acessadas ou podem ser obtidas consultando um Realm.
RLMDictionary
suporta apenas NSString
como uma chave. O Realm não permite o uso de .
ou $
caracteres em uma chave de dicionário.
Observação de valor-chave
RLMDictionary
suporta a observação de valor-chave de dicionário em propriedades RLMDictionary
em subclasses RLMObject
e a propriedade RLMDictionary
invalidated
em si mesmas instâncias é compatível com a observação de valor-chave quando RLMDictionary
está anexado a um RLMObject
gerenciado (RLMDictionary
s em RLMObject
s não gerenciados nunca serão invalidados).
-
O número de entradas no dicionário.
Declaração
Objective-C
@property (nonatomic, readonly) NSUInteger count;
Swift
var count: UInt { get }
-
O tipo dos objetos no dicionário.
Declaração
Objective-C
@property (nonatomic, readonly) RLMPropertyType type;
Swift
var type: RLMPropertyType { get }
-
O tipo da chave usada neste dicionário.
Declaração
Objective-C
@property (nonatomic, readonly) RLMPropertyType keyType;
Swift
var keyType: 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 }
-
O nome da classe dos objetos contidos no dicionário.
será
nil
setype
não for RLMPropertyTypeObject.Declaração
Objective-C
@property (nonatomic, copy, readonly, nullable) NSString *objectClassName;
Swift
var objectClassName: String? { get }
-
Indica se o dicionário 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 dicionário está congelado.
Os dicionários congelados são imutáveis e podem ser acessados de qualquer thread. Os dicionários congelados são criados chamando
-freeze
em um dicionário ativo gerenciado. Dicionários não gerenciados nunca são congelados.Declaração
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
Retorna o valor associado a uma determinada chave.
@discussion Se a chave não começar com "@", invoca o objeto(forKey:). Se a chave começar com "@", remove o "@" e invoca [super valueForKey:] com o resto da chave.
Declaração
Objective-C
- (nullable id)valueForKey:(nonnull RLMKeyType)key;
Swift
func value(forKey key: RLMKeyType) -> Any?
Parâmetros
key
O nome da propriedade.
Valor de retorno
Um valor associado a uma determinada chave ou
nil
. -
Retorna uma array contendo as chaves do dicionário.
Observação
A ordem dos elementos na array não está definida.Declaração
Objective-C
@property (copy, readonly) NSArray<RLMKeyType> *_Nonnull allKeys;
Swift
var allKeys: [RLMKeyType] { get }
-
Retorna um array contendo os valores do dicionário.
Observação
A ordem dos elementos na array não está definida.Declaração
Objective-C
@property (copy, readonly) NSArray<RLMObjectType> *_Nonnull allValues;
Swift
var allValues: [RLMObjectType] { get }
-
Retorna o valor associado a uma determinada chave.
Observação
nil
será retornado se nenhum valor estiver associado a uma determinada chave. NSNull será retornado onde nulo estiver associado à chave.Declaração
Objective-C
- (nullable RLMObjectType)objectForKey:(nonnull RLMKeyType)key;
Swift
func object(forKey key: RLMKeyType) -> RLMObjectType?
Parâmetros
key
A chave para a qual retornar o valor correspondente.
Valor de retorno
O valor associado à chave.
-
Retorna o valor associado a uma determinada chave.
Observação
nil
será retornado se nenhum valor estiver associado a uma determinada chave. NSNull será retornado onde nulo estiver associado à chave.Declaração
Objective-C
- (nullable RLMObjectType)objectForKeyedSubscript:(nonnull RLMKeyType)key;
Swift
subscript(key: RLMKeyType) -> RLMObjectType? { get set }
Parâmetros
key
A chave para a qual retornar o valor correspondente.
Valor de retorno
O valor associado à chave.
-
Aplica um determinado objeto de bloco a cada par de valores-chave do dicionário.
Observação
Se o bloco definir *stop para YES, a enumeração para.
Declaração
Objective-C
- (void)enumerateKeysAndObjectsUsingBlock: (nonnull void (^)(RLMKeyType _Nonnull, RLMObjectType _Nonnull, BOOL *_Nonnull))block;
Swift
func enumerateKeysAndObjects(_ block: @escaping (RLMKeyType, RLMObjectType, UnsafeMutablePointer<ObjCBool>) -> Void)
Parâmetros
block
Um objeto de bloco para operar em entradas no dicionário.
-
Substitua o conteúdo de um dicionário pelo conteúdo de outro dicionário - NSDictionary ou RLMDictionary.
Isso removerá todos os elementos deste dicionário e, em seguida, aplicará cada elemento do dicionário fornecido.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Aviso
Se otherDictionary for auto, isso resultará em um dicionário vazio.Declaração
Objective-C
- (void)setDictionary:(nonnull id)otherDictionary;
Swift
func setDictionary(_ otherDictionary: Any)
-
Remove todo o conteúdo do dicionário.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)removeAllObjects;
Swift
func removeAllObjects()
-
Remove do dicionário entradas especificadas por elementos em uma determinada array. Se uma determinada chave não existir, nenhuma mutação ocorrerá para essa chave.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)removeObjectsForKeys:(nonnull NSArray<RLMKeyType> *)keyArray;
Swift
func removeObjects(forKeys keyArray: [RLMKeyType])
-
Remove uma determinada chave e seu valor associado do dicionário. Se a chave não existir, o dicionário não será modificado.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)removeObjectForKey:(nonnull RLMKeyType)key;
Swift
func removeObject(forKey key: RLMKeyType)
-
Adiciona um determinado par de valores-chave ao dicionário se a chave não estiver presente ou atualizar o valor da chave fornecida se a chave já estiver presente.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)setObject:(nullable RLMObjectType)obj forKeyedSubscript:(nonnull RLMKeyType)key;
-
Adiciona um determinado par de valores-chave ao dicionário se a chave não estiver presente ou atualizar o valor da chave fornecida se a chave já estiver presente.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)setObject:(nullable RLMObjectType)anObject forKey:(nonnull RLMKeyType)aKey;
Swift
func setObject(_ anObject: RLMObjectType?, forKey aKey: RLMKeyType)
-
Adiciona ao dicionário receptor as entradas de outro dicionário.
Observação
Se o dicionário de destino contiver a(s) mesma(s) chave(s) que o otherDictionary, o dicionário de destino atualizará cada par de chave-valor para a chave correspondente.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (void)addEntriesFromDictionary:(nonnull id<NSFastEnumeration>)otherDictionary;
Swift
func addEntries(fromDictionary otherDictionary: any NSFastEnumeration)
Parâmetros
otherDictionary
Um objeto enumerável como
NSDictionary
ouRLMDictionary
que contém objetos do mesmo tipo que o dicionário receptor.
-
Retorna todos os valores correspondentes ao predicado fornecido no dicionário.
Observação
As chaves no dicionário são ignoradas ao consultar valores e não serão retornadas no
RLMResults
.Declaração
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWhere: (nonnull NSString *)predicateFormat, ...;
Parâmetros
predicateFormat
Uma string de formato de predicado, opcionalmente seguida por um número variável de argumentos.
Valor de retorno
Um
RLMResults
de objetos que correspondem ao predicado fornecido. -
Retorna todos os valores correspondentes ao predicado fornecido no dicionário.
Observação
As chaves no dicionário são ignoradas ao consultar valores e não serão retornadas no
RLMResults
.Declaração
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWithPredicate: (nonnull NSPredicate *)predicate;
Swift
func objects(with predicate: NSPredicate) -> RLMResults
Parâmetros
predicate
O predicado com o qual filtrar os objetos.
Valor de retorno
Um
RLMResults
de objetos que correspondem ao predicado fornecido -
Retorna um RLMResults classificado de todos os valores no dicionário.
Observação
As chaves no dicionário são ignoradas ao classificar os valores e não serão retornadas no
RLMResults
.Declaração
Objective-C
- (nonnull RLMResults<RLMObjectType> *) sortedResultsUsingKeyPath:(nonnull NSString *)keyPath ascending:(BOOL)ascending;
Swift
func sortedResults(usingKeyPath keyPath: String, ascending: Bool) -> RLMResults
Parâmetros
keyPath
O caminho da chave para classificar por.
ascending
A direção para classificar.
Valor de retorno
Um
RLMResults
classificado pelo caminho da chave especificado. -
Retorna um RLMResults classificado de todos os valores no dicionário.
Observação
As chaves no dicionário são ignoradas ao classificar os valores e não serão retornadas no
RLMResults
.Declaração
Objective-C
- (nonnull RLMResults<RLMObjectType> *)sortedResultsUsingDescriptors: (nonnull NSArray<RLMSortDescriptor *> *)properties;
Swift
func sortedResults(using properties: [RLMSortDescriptor]) -> RLMResults
Parâmetros
properties
Uma array de
RLMSortDescriptor
s para classificar.Valor de retorno
Um
RLMResults
classificado pelas propriedades especificadas. -
Retorna um
RLMResults
distinto de todos os valores no dicionário.Observação
As chaves no dicionário são ignoradas e não serão retornadas no
RLMResults
.Declaração
Objective-C
- (nonnull RLMResults<RLMObjectType> *)distinctResultsUsingKeyPaths: (nonnull NSArray<NSString *> *)keyPaths;
Swift
func distinctResults(usingKeyPaths keyPaths: [String]) -> RLMResults
Parâmetros
keyPaths
Os principais caminhos para distinguir.
Valor de retorno
Um
RLMResults
com os valores distintos do(s) caminho(s) chave(s).
-
Retorna o valor mínimo (mais baixo) da propriedade fornecida entre todos os valores no dicionário.
NSNumber *min = [object.dictionaryProperty minOfProperty:@"age"];
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
,NSDate
,RLMValue
eRLMDecimal128
são suportados.Valor de retorno
O valor mínimo da propriedade ou
nil
se o dicionário estiver vazio. -
Retorna o valor máximo (mais alto) de uma determinada propriedade entre todos os objetos no dicionário.
NSNumber *max = [object.dictionaryProperty maxOfProperty:@"age"];
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ínimo é desejado. Somente propriedades dos tipos
int
,float
,double
,NSDate
,RLMValue
eRLMDecimal128
são suportados.Valor de retorno
O valor máximo da propriedade ou
nil
se o dicionário estiver vazio. -
Retorna a soma de valores distintos de uma determinada propriedade sobre todos os objetos no dicionário.
NSNumber *sum = [object.dictionaryProperty sumOfProperty:@"age"];
Declaração
Objective-C
- (nonnull NSNumber *)sumOfProperty:(nonnull NSString *)property;
Swift
func sum(ofProperty property: String) -> NSNumber
Parâmetros
property
A propriedade cujo valor mínimo é desejado. Somente propriedades dos tipos
int
,float
,double
,RLMValue
eRLMDecimal128
são suportados.Valor de retorno
A soma da propriedade fornecida.
-
Retorna o valor médio de uma determinada propriedade sobre os objetos no dicionário.
NSNumber *average = [object.dictionaryProperty averageOfProperty:@"age"];
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ínimo é desejado. Somente propriedades dos tipos
int
,float
,double
,NSDate
,RLMValue
eRLMDecimal128
são suportados.Valor de retorno
O valor médio da propriedade fornecida ou
nil
se o dicionário estiver vazio.
-
Registra um bloco a ser chamado sempre que o dicionário for alterado.
O bloco será chamado de forma assíncrona com o dicionário inicial e, em seguida, chamado novamente após cada transação de gravação que altere qualquer uma das chaves ou valores dentro do dicionário.
O parâmetro
changes
seránil
na primeira vez que o bloco for chamado. Para cada chamada posterior, ela conterá informações sobre quais chaves do dicionário foram adicionadas, modificadas ou excluídas. Se uma transação de gravação não modificou nenhuma chave ou valor no dicionário, o bloco não será chamado.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(RLMDictionary<NSString *, Dog *><RLMString, Dog> *dogs, RLMDictionaryChange *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[@"frenchBulldog"] = 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 dicionário gerenciado não congelado.
Declaração
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull void (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (any Error)?) -> Void) -> RLMNotificationToken
Parâmetros
block
O bloco a ser chamado sempre que o dicionário 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 sempre que o dicionário for alterado.
O bloco será chamado de forma assíncrona com o dicionário inicial e, em seguida, chamado novamente após cada transação de gravação que altere qualquer valor-chave no dicionário ou quais objetos estão nos resultados.
O parâmetro
changes
seránil
na primeira vez que o bloco for chamado. Para cada chamada posterior, ela conterá informações sobre quais chaves do dicionário foram adicionadas ou modificadas. Se uma transação de gravação não modificou nenhum objeto no dicionário, o bloco não será chamado.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 (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (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 sempre que o dicionário for alterado.
O bloco será chamado de forma assíncrona com o dicionário inicial e, em seguida, chamado novamente após cada transação de gravação que altere qualquer valor-chave no dicionário ou quais objetos estão nos resultados.
O parâmetro
changes
seránil
na primeira vez que o bloco for chamado. Para cada chamada posterior, ela conterá informações sobre quais chaves do dicionário foram adicionadas ou modificadas. Se uma transação de gravação não modificou nenhum objeto no dicionário, o bloco não será chamado.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 (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (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.
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 sempre que o dicionário for alterado.
O bloco será chamado de forma assíncrona com o dicionário inicial e, em seguida, chamado novamente após cada transação de gravação que altere qualquer valor-chave no dicionário ou quais objetos estão nos resultados.
O parâmetro
changes
seránil
na primeira vez que o bloco for chamado. Para cada chamada posterior, ela conterá informações sobre quais chaves do dicionário foram adicionadas ou modificadas. Se uma transação de gravação não modificou nenhum objeto no dicionário, o bloco não será chamado.O parâmetro de erro está presente apenas para compatibilidade com versões anteriores e sempre será
nil
.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 (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (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.
-
Retorna um snapshot congelado (imutável) de um dicionário.
A cópia congelada é um dicionário imutável que contém os mesmos dados que este dicionário contém atualmente, mas não será atualizado quando forem feitas gravações no Realm que o contém. Ao contrário dos dicionários ativos, os dicionários congelados podem ser acessados a partir 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 dicionário gerenciado.Aviso
Manter um dicionário congelado por um longo período enquanto executa uma transação de gravação no Realm pode resultar no aumento do Arquivo de Realm para tamanhos grandes. ConsulteRLMRealmConfiguration.maximumNumberOfActiveVersions
para 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
-
Indisponível
O RLMDictionary não pode ser criado diretamente
-[RLMDictionary init]
não está disponível porqueRLMDictionary
s não pode ser criado diretamente. As propriedadesRLMDictionary
emRLMObject
s são criadas preguiçosamente quando acessadas.Declaração
Objective-C
- (nonnull instancetype)init;
-
Indisponível
O RLMDictionary não pode ser criado diretamente
+[RLMDictionary new]
não está disponível porqueRLMDictionary
s não pode ser criado diretamente. As propriedadesRLMDictionary
emRLMObject
s são criadas preguiçosamente quando acessadas.Declaração
Objective-C
+ (nonnull instancetype)new;