RealmKeyedCollection
public protocol RealmKeyedCollection : ThreadConfined, CustomStringConvertible, Sequence
Uma coleção uniforme de valores-chave de Object
s que pode ser recuperada, filtrada, classificada e operada.
-
O tipo de chave associado a esta collection
Declaração
Swift
associatedtype Key : _MapKey
-
O tipo de valor associado a esta collection.
Declaração
Swift
associatedtype Value : RealmCollectionValue
-
O Realm que gerencia o mapa, ou
nil
se o mapa não for gerenciado.Declaração
Swift
var realm: Realm? { get }
-
Indica se o mapa não pode mais ser acessado.
Declaração
Swift
var isInvalidated: Bool { get }
-
Retorna o número de pares de valores-chave neste mapa.
Declaração
Swift
var count: Int { get }
-
Uma descrição legível por humanos dos objetos contidos no Mapa.
Declaração
Swift
var description: String { get }
-
Atualiza o valor armazenado no dicionário para a chave fornecida ou adiciona um novo par chave-valor se a chave não existir.
Observação
Observação: se o valor que está sendo adicionado ao dicionário for um objeto não gerenciado e o dicionário for gerenciado, esse objeto não gerenciado será adicionado ao Realm.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Parâmetros
value
o predicado de caminho chave de um valor.
forKey
A direção para classificar.
-
Remove a chave fornecida e seu objeto associado somente se a chave existir no 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
Swift
func removeObject(for key: Key)
-
Remove todos os objetos do dicionário. Os objetos não são removidos do Realm que os gerencia.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Swift
func removeAll()
-
Retorna o valor de uma determinada chave ou define um valor para uma chave caso o índice seja usado para uma atribuição.
Observação
Observação: se o valor que está sendo adicionado ao dicionário for um objeto não gerenciado e o dicionário for gerenciado, esse objeto não gerenciado será adicionado ao Realm.
Observação
Observação:Se o valor que está sendo atribuído a uma chave for
nil
, essa chave será removida do dicionário.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Parâmetros
key
A chave.
-
Retorna um tipo de
Value
para uma chave especificada se ela existir no mapa.Observe que, ao usar a codificação key-value, a chave deve ser uma string.
Declaração
Swift
func value(forKey key: String) -> AnyObject?
Parâmetros
key
A chave para a propriedade cujos valores são desejados.
-
Retorna um tipo de
Value
para uma chave especificada se ela existir no mapa.Declaração
Swift
func value(forKeyPath keyPath: String) -> AnyObject?
Parâmetros
keyPath
A chave para a propriedade cujos valores são desejados.
-
Adiciona um determinado par de valores-chave ao dicionário ou atualiza uma determinada chave caso ela já exista.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
func setValue(_ value: Any?, forKey key: String)
Parâmetros
value
O valor do objeto.
key
O nome da propriedade cujo valor deve ser definido em cada objeto.
-
Retorna um
Results
contendo todos os valores correspondentes no dicionário com o predicado fornecido.Observação
Isso retornará os valores no dicionário, e não os pares chave-valor.
Parâmetros
predicate
O predicado com o qual filtrar os valores.
-
Retorna um valor booleano que indica se o Mapa contém o par de valores-chave que satisfaz o predicado fornecido
Declaração
Parâmetros
where
um fechamento que testa se algum par de chaves do mapa fornecido representa a correspondência.
-
Retorna um
Results
contendo os objetos no dicionário, mas classificados.Objetos são classificados com base em seus valores. Por exemplo, para classificar um dicionário de
Date
s da base mais recente para a mais antiga, você pode chamardates.sorted(ascending: true)
.Parâmetros
ascending
A direção para classificar.
-
Retorna um
Results
contendo os objetos no dicionário, mas classificados.Os objetos são classificados com base nos valores do caminho da chave fornecido. Por exemplo, para classificar um dicionário de
Student
s do mais novo para o mais antigo com base em sua propriedadeage
, você pode chamarstudents.sorted(byKeyPath: "age", ascending: true)
.Aviso
Os dicionários só podem ser classificados por propriedades dos tipos booleano,
Date
,NSDate
, ponto flutuante de precisão única e dupla, inteiro e string.Parâmetros
keyPath
O caminho da chave para classificar por.
ascending
A direção para classificar.
-
Retorna um
Results
contendo os objetos no dicionário, mas classificados.Aviso
Os dicionários só podem ser classificados por propriedades dos tipos booleano,
Date
,NSDate
, ponto flutuante de precisão única e dupla, inteiro e string.Declaração
Swift
func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Value> where S.Iterator.Element == SortDescriptor
-
Retorna todas as chaves neste dicionário.
Declaração
Swift
var keys: [Key] { get }
-
Retorna todos os valores no dicionário.
Declaração
Swift
var values: [Value] { get }
-
Retorna o valor mínimo (mais baixo) de uma propriedade fornecida entre todos os objetos da coleção, ou
nil
se o dicionário estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
func min<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType
Parâmetros
property
O nome de uma propriedade cujo valor mínimo é desejado.
-
Retorna o valor máximo (mais alto) da propriedade fornecida entre todos os objetos no dicionário ou
nil
se o dicionário estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
func max<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType
Parâmetros
property
O nome de uma propriedade cujo valor mínimo é desejado.
-
Retorna a soma da propriedade fornecida para objetos no dicionário ou
nil
se o dicionário estiver vazio.Aviso
Somente nomes de propriedades de um tipo em conformidade com o protocolo
AddableType
podem ser usados.Declaração
Swift
func sum<T>(ofProperty property: String) -> T where T : _HasPersistedType, T.PersistedType : AddableType
Parâmetros
property
O nome de uma propriedade em conformidade com
AddableType
para calcular a soma. -
Retorna o valor médio de uma determinada propriedade em todos os objetos no dicionário ou
nil
se o dicionário estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
AddableType
pode ser especificada.Declaração
Swift
func average<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : AddableType
Parâmetros
property
O nome de uma propriedade cujos valores devem ser somados.
-
observe(keyPaths:
Implementação padrãoon: _: ) 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 no dicionário.
O parâmetro
change
que é passado para o bloco relata, na forma de chaves dentro do dicionário, quais dos pares de valores-chave foram adicionados, removidos ou modificados durante cada transação de escrita.No momento em que o bloqueio é chamado, o dicionário será totalmente avaliado e atualizado e, desde que você não execute uma transação de gravação no mesmo thread ou chame explicitamente
realm.refresh()
, acessá-lo nunca executará o bloqueio trabalho.Se nenhuma fila for fornecida, as notificações serão entregues por meio do loop de execução padrão e, portanto, não poderão ser entregues enquanto o loop de execução estiver bloqueado por outra atividade. Se uma fila for fornecida, as notificações serão entregues para essa fila. 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 a coleção inicial.
Por exemplo, o código a seguir executa uma transação de escrita imediatamente após adicionar o bloqueio de notificação, para que não haja oportunidade para que a notificação inicial seja entregue primeiro. Como resultado, a notificação inicial refletirá o estado do Realm após a transação de escrita.
let myStringMap = myObject.stringMap print("myStringMap.count: \(myStringMap?.count)") // => 0 let token = myStringMap.observe { changes in switch changes { case .initial(let myStringMap): // Will print "myStringMap.count: 1" print("myStringMap.count: \(myStringMap.count)") print("Dog Name: \(myStringMap["nameOfDog"])") // => "Rex" break case .update: // Will not be hit in this example break case .error: break } } try! realm.write { myStringMap["nameOfDog"] = "Rex" } // end of run loop execution context
Se nenhum caminho-chave for fornecido, o bloqueio será executado em qualquer inserção, modificação ou exclusão para todas as propriedades do objeto e as propriedades de quaisquer objetos vinculados aninhados. Se um caminho de chave ou caminhos de chave forem fornecidos, o bloco será chamado para alterações que ocorrem apenas nos caminhos de chave fornecidos. Por exemplo, se:
class Dog: Object { @Persisted var name: String @Persisted var age: Int @Persisted var toys: List<Toy> } // ... let dogs = myObject.mapOfDogs let token = dogs.observe(keyPaths: ["name"]) { changes in switch changes { case .initial(let dogs): // ... case .update: // This case is hit: // - after the token is initialized // - when the name property of an object in the // collection is modified // - when an element is inserted or removed // from the collection. // This block is not triggered: // - when a value other than name is modified on // one of the elements. case .error: // ... } } // end of run loop execution context
- Se o caminho da chave observado fosse
["toys.brand"]
, qualquer inserção ou exclusão na listatoys
em qualquer um dos elementos da collection trigger o bloqueio. Alterações no valorbrand
em qualquerToy
vinculado a umDog
nessa collection triggerão o bloqueio. Alterações em um valor diferente debrand
em qualquerToy
vinculado a umDog
nessa collection não trigger o bloqueio. Qualquer inserção ou remoção na collection de tiposDog
que está sendo observada também trigger uma notificação. Se o exemplo acima observasse o caminho da chave
["toys"]
, qualquer inserção, exclusão ou modificação na listatoys
para qualquer elemento da collection trigger o bloqueio. Alterações em qualquer valor em qualquerToy
que esteja vinculado a umDog
nesta collection não trigger o bloqueio. Qualquer inserção ou remoção na collection de tiposDog
que está sendo observada ainda trigger uma notificação.
Observação
Vários tokens de notificação no mesmo objeto que filtram exclusivamente caminhos de chave separados não filtram. Se uma alteração de caminho-chavefor satisfeita para um token de notificação, todos os bloqueios de token de notificação para esse objeto serão executados.
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.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.
Observação
O parâmetro keyPaths refere-se às propriedades de objeto do tipo de coleção e não se refere a pares de chave/valor específicos dentro da coleção.
Implementação padrão
Declaração
Swift
func observe(keyPaths: [String]?, on queue: DispatchQueue?, _ block: @escaping (RealmMapChange<Self>) -> Void) -> NotificationToken
Parâmetros
keyPaths
Somente a propriedade contida na array de caminhos principais vai trigger o bloqueio quando forem modificadas. Se
nil
, notificações serão entregues para qualquer alteração de propriedade no objeto. Os caminhos da chave de string que não correspondem a uma propriedade válida lançarão uma exceção. Consulte a descrição acima para obter mais detalhes sobre propriedades vinculadas.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 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.
- Se o caminho da chave observado fosse
-
Retorna se esta coleção estiver congelada
Declaração
Swift
var isFrozen: Bool { get }
-
Retorna um snapshot congelado (imutável) desta collection.
A cópia congelada é uma coleção imutável que contém os mesmos dados que esta coleção contém atualmente, mas não será atualizada quando forem feitas gravações no Realm que a contém. Ao contrário das collections ativas, as collections congeladas podem ser acessadas 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
Manter uma collection congelada por um longo período enquanto executa transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. ConsulteRealm.Configuration.maximumNumberOfActiveVersions
para obter mais informações.Declaração
Swift
func freeze() -> Self
-
Retorna uma versão ativa (mutável) 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
Swift
func thaw() -> Self?
-
objectWillChange
Método de extensãoUma editora que emite um vazio toda vez que a collection muda.
Apesar do nome, isso na verdade é emitido após a mudança da collection.
Declaração
Swift
public var objectWillChange: RealmPublishers.WillChange<Self> { get }
-
collectionPublisher
Método de extensãoUm editor que emite a collection toda vez que a collection é alterada.
Declaração
Swift
public var collectionPublisher: RealmPublishers.Value<Self> { get }
-
collectionPublisher(keyPaths:
Método de extensão) Um editor que emite a collection toda vez que a collection muda nos keyPaths de propriedade fornecidos.
Declaração
Swift
public func collectionPublisher(keyPaths: [String]?) -> RealmPublishers.Value<Self>
-
changesetPublisher
Método de extensãoUm editor que emite um conjunto de alterações de collection toda vez que a collection é alterada.
Declaração
Swift
public var changesetPublisher: RealmPublishers.MapChangeset<Self> { get }
-
changesetPublisher(keyPaths:
Método de extensão) Um editor que emite um conjunto de alterações de collection cada vez que a collection é alterada nos keyPaths de propriedade fornecidos.
Declaração
Swift
public func changesetPublisher(keyPaths: [String]?) -> RealmPublishers.MapChangeset<Self>
-
min(of:
Método de extensão) Retorna o valor mínimo (mais baixo) da propriedade fornecida entre todos os objetos da collection ou
nil
se a collection estiver vazia.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
func min<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType
Parâmetros
keyPath
O keyPath de uma propriedade cujo valor mínimo é desejado.
-
max(of:
Método de extensão) Retorna o valor máximo (mais alto) da propriedade fornecida entre todos os objetos na collection ou
nil
se a collection estiver vazia.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
func max<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType
Parâmetros
keyPath
O keyPath de uma propriedade cujo valor mínimo é desejado.
-
sum(of:
Método de extensão) Retorna a soma da propriedade fornecida para objetos na collection ou
nil
se a collection estiver vazia.Aviso
Somente nomes de propriedades de um tipo em conformidade com o protocolo
AddableType
podem ser usados.Declaração
Swift
func sum<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T where T : _HasPersistedType, T.PersistedType : AddableType
Parâmetros
keyPath
O keyPath de uma propriedade em conformidade com
AddableType
para calcular a soma. -
average(of:
Método de extensão) Retorna o valor médio de uma determinada propriedade sobre todos os objetos na collection ou
nil
se a collection estiver vazia.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
AddableType
pode ser especificada.Declaração
Swift
func average<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : AddableType
Parâmetros
keyPath
O keyPath de uma propriedade cujos valores devem ser somados.
Disponível onde Value
: OptionalProtocol
, Value.Wrapped
: ObjectBase
, Value.Wrapped
: RealmCollectionValue
-
sorted(by:
Método de extensãoascending: ) Retorna um
Results
contendo os objetos na collection, mas ordenados.Os objetos são classificados com base nos valores do caminho de chave fornecido. Por exemplo, para classificar uma coleção de
Student
s do mais novo para o mais antigo com base em sua propriedadeage
, você pode chamarstudents.sorted(byKeyPath: "age", ascending: true)
.Aviso
As collection só podem ser classificadas por propriedade dos tipos booleano,
Date
,NSDate
, ponto flutuante de precisão única e dupla, inteiro e string.Declaração
Swift
func sorted<T>(by keyPath: KeyPath<Value.Wrapped, T>, ascending: Bool) -> Results<Value> where T : _HasPersistedType, T.PersistedType : SortableType
Parâmetros
keyPath
O caminho da chave para classificar por.
ascending
A direção para classificar.
-
sum()
Método de extensãoRetorna a soma dos valores na collection ou
nil
se a collection estiver vazia.Declaração
Swift
func sum() -> Value
-
average()
Método de extensãoRetorna a média de todos os valores na collection.
Declaração
Swift
func average<T>() -> T? where T : _HasPersistedType, T.PersistedType : AddableType
-
sorted(ascending:
Implementação padrão) Implementação padrão
Retorna um
Results
contendo os objetos na collection, mas ordenados.objeto são classificados com base em seus valores. Por exemplo, para classificar uma coleção de
Date
s do mais recente para o mais antigo, você pode chamardates.sorted(ascending: true)
.Parâmetros
ascending
A direção para classificar.