Map
public final class Map<Key, Value> : RLMSwiftCollectionBase where Key : _MapKey, Value : RealmCollectionValue
extension Map: ObservableObject, RealmSubscribable
extension Map: Sequence
extension Map: RealmKeyedCollection
O Map é um container de armazenamento de valor chave usado para armazenar tipos de Realm suportados.
O mapa é um tipo genérico parametrizado no tipo que armazena. Pode ser uma subclasse de objetos ou um dos seguintes tipos: Bool, Int, Int8, Int16, Int32, Int64, Flutuante, Duplo, String, Dados, Data, Decimal128 e ObjectId (e suas versões opcionais)
Observação
Versões opcionais dos tipos acima, excetoObject
, só são suportadas em Realms não sincronizados.
O mapa suporta apenas string como uma chave.
Ao contrário da collection nativa do Swift, o Map
s é um tipo de referência e só é imutável se o Realm que os managed for aberto como somente leitura.
Um Mapa pode ser filtrado e ordenado com os mesmos predicados do Results<Value>
.
Propriedades do tipo Map
definido em Object
subclasses devem ser declaradas como let
e não podem ser dynamic
.
-
O Realm que gerencia o mapa, ou
nil
se o mapa não for gerenciado.Declaração
Swift
public var realm: Realm? { get }
-
Indica se o mapa não pode mais ser acessado.
Declaração
Swift
public var isInvalidated: Bool { get }
-
Retorna todas as chaves neste mapa.
Declaração
Swift
public var keys: [Key] { get }
-
Retorna todos os valores neste mapa.
Declaração
Swift
public var values: [Value] { get }
-
Cria um
Map
que contém objetos de modelo de Realm do tipoValue
.Declaração
Swift
public override init()
-
Retorna o número de pares de valores-chave neste mapa.
Declaração
Swift
@objc public var count: Int { get }
-
Atualiza o valor armazenado no mapa para a chave fornecida ou adiciona um novo par chave-valor se a chave não existir.
Observação
Observação:Se o valor adicionado ao mapa for um objeto não gerenciado e o mapa 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.
Declaração
Swift
public func updateValue(_ value: Value, forKey key: Key)
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 mapa. Se a chave não existir, o mapa não será modificado.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Swift
public func removeObject(for key: Key)
-
Remove todos os objetos do mapa. O objeto não é removido do Realm que managed eles.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Swift
public 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 adicionado ao mapa for um objeto não gerenciado e o mapa 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 mapa.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
public subscript(key: Key) -> Value? { get set }
Parâmetros
key
A chave.
-
Retorna um tipo de
AnyObject
para uma chave especificada se ela existir no mapa.Declaração
Swift
@objc public func object(forKey key: AnyObject) -> 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.Observe que, ao usar a codificação key-value, a chave deve ser uma string.
Declaração
Swift
@nonobjc public 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
@nonobjc public func value(forKeyPath keyPath: String) -> AnyObject?
Parâmetros
keyPath
A chave para a propriedade cujos valores são desejados.
-
Adiciona um determinado par de chave-valor ao mapa 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
public override 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 mapa com o predicado fornecido.Observação
Isso retornará os valores no mapa, e não os pares chave-valor.
Declaração
Swift
public func filter(_ predicate: NSPredicate) -> Results<Value>
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
Swift
public func contains(where predicate: @escaping (_ key: Key, _ value: Value) -> Bool) -> Bool
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 mapa, mas ordenados.Objetos são classificados com base em seus valores. Por exemplo, para classificar um mapa de
Date
s da base mais recente para a mais antiga, você pode chamardates.sorted(ascending: true)
.Declaração
Swift
public func sorted(ascending: Bool = true) -> Results<Value>
Parâmetros
ascending
A direção para classificar.
-
Retorna um
Results
contendo os objetos no mapa, mas ordenados.Os objetos são classificados com base nos valores do caminho de chave fornecido. Por exemplo, para classificar um mapa 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.Declaração
Swift
public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Value>
Parâmetros
keyPath
O caminho da chave para classificar por.
ascending
A direção para classificar.
-
Retorna um
Results
contendo os objetos no mapa, mas ordenados.Aviso
Os mapas só podem ser classificados pelas propriedades dos tipos booleano,
Date
,NSDate
, ponto flutuante de precisão única e dupla, inteiros e string.Declaração
Swift
public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Value> where S.Iterator.Element == SortDescriptor
-
Retorna o valor mínimo (mais baixo) da propriedade fornecida entre todos os objeto na collection ou
nil
se o mapa estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
public func min<T>(ofProperty property: String) -> T? where T : 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 na collection, ou
nil
se o mapa estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
MinMaxType
pode ser especificada.Declaração
Swift
public func max<T>(ofProperty property: String) -> T? where T : MinMaxType
Parâmetros
property
O nome de uma propriedade cujo valor mínimo é desejado.
-
Retorna a soma da propriedade fornecida para objetos na collection ou
nil
se o mapa estiver vazio.Aviso
Somente nomes de propriedades de um tipo em conformidade com o protocolo
AddableType
podem ser usados.Declaração
Swift
public func sum<T>(ofProperty property: String) -> T where T : 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 sobre todos os objeto na collection ou
nil
se o mapa estiver vazio.Aviso
Somente uma propriedade cujo tipo esteja em conformidade com o protocolo
AddableType
pode ser especificada.Declaração
Swift
public func average<T>(ofProperty property: String) -> T? where T : AddableType
Parâmetros
property
O nome de uma propriedade cujos valores devem ser somados.
-
Registra um bloco a ser chamado cada vez que o mapa for alterado.
O bloco será chamado de forma assíncrona com o mapa inicial e, em seguida, chamado novamente após cada transação de escrita que altere qualquer uma das chaves ou valores no mapa.
O parâmetro
change
que é passado para o bloco reporta, na forma de chaves dentro do mapa, quais dos pares de chave-valor foram adicionados, removidos ou modificados durante cada transação de escrita.No momento em que o bloqueio é chamado, o mapa será totalmente avaliado e atualizado e, desde que você não execute uma transação de gravação na mesma 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
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.
Declaração
Swift
public func observe(on queue: DispatchQueue?, _ block: @escaping (RealmMapChange<Map>) -> 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 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.
-
Indica se o
Map
está congelado.Map
s congelados são imutáveis e podem ser acessados de qualquer thread.Map
s congelados são criados chamando-freeze
em umMap
ativo managed.Map
s não gerenciados nunca são congelados.Declaração
Swift
public var isFrozen: Bool { get }
-
Retorna um snapshot congelado (imutável) de um
Map
.A cópia congelada é um
Map
imutável que contém os mesmos dados que esteMap
contém atualmente, mas não será atualizado quando forem feitas gravações no Realm que a contém. Ao contrário dosMap
Map
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 umMap
managed.Aviso
Manter umMap
congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o arquivo do Realm cresça para tamanhos grandes. ConsulteRLMRealmConfiguration.maximumNumberOfActiveVersions
para obter mais informações.Declaração
Swift
public func freeze() -> Map
-
Retorna uma versão ativa deste
Map
congelado.Este método resolve uma referência a uma cópia ativa do mesmo
Map
congelado. Se chamado em umMap
ao vivo, se retornará.Declaração
Swift
public func thaw() -> Map?
-
Retorna uma descrição legível por humanos dos objetos contidos no Mapa.
Declaração
Swift
@objc public override var description: String { get }
-
Uma 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<Map> { get }
-
Retorna um
RLMMapIterator
que produz elementos sucessivos noMap
.Declaração
Swift
public func makeIterator() -> RLMMapIterator<SingleMapEntry<Key, Value>>
-
Retorna o valor mínimo (mais baixo) no mapa ou
nil
se o mapa estiver vazio.Declaração
Swift
public func min() -> Value?
-
Retorna o valor máximo (mais alto) no mapa ou
nil
se o mapa estiver vazio.Declaração
Swift
public func max() -> Value?
-
Retorna o valor mínimo (mais baixo) do mapa, ou
nil
se o mapa estiver vazio.Declaração
Swift
public func min() -> Value.Wrapped?
-
Retorna o valor máximo (mais alto) do mapa, ou
nil
se o mapa estiver vazio.Declaração
Swift
public func max() -> Value.Wrapped?
-
Retorna a soma dos valores no mapa.
Declaração
Swift
public func sum() -> Value
-
Retorna a média dos valores no mapa ou
nil
se o mapa estiver vazio.Declaração
Swift
public func average<T>() -> T? where T : AddableType
-
Retorna a soma dos valores no mapa ou
nil
se o mapa estiver vazio.Declaração
Swift
func sum() -> Value.Wrapped
-
Retorna a média de todos os valores na collection.
Declaração
Swift
func average<T>() -> T? where T : AddableType