Lista

public final class List<Element> : RLMSwiftCollectionBase where Element : RealmCollectionValue
extension List: ObservableObject, RealmSubscribable
extension List: RealmCollection
extension List: MutableCollection
extension List: Decodable where Element: Decodable
extension List: Encodable where Element: Encodable

List é o tipo de container no Realm usado para definir relacionamento para muitos.

Como o Array do Swift, o List é um tipo genérico parametrizado de acordo com o tipo que armazena. Pode ser uma subclasse Object ou um dos seguintes tipos: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128 e ObjectId (e suas versões opcionais)

Ao contrário das collection nativas do Swift, os Lists são tipos de referência e só são imutáveis se o Realm que os managed for aberto como somente leitura.

As listas podem ser filtradas e classificadas com os mesmos predicados de Results<Element>.

Propriedades do tipo List definido em Object subclasses devem ser declaradas como let e não podem ser dynamic.

Propriedades

Inicializadores

  • Cria um List que contém objetos de modelo de Realm do tipo Element.

    Declaração

    Swift

    public override init()

Contar

  • Retorna o número de objetos nesta lista.

    Declaração

    Swift

    public var count: Int { get }

Recuperação de Índice

  • Retorna o índice de um objeto na lista ou nil se o objeto não estiver presente.

    Declaração

    Swift

    public func index(of object: Element) -> Int?

    Parâmetros

    object

    Um objeto para encontrar.

  • Retorna o índice do primeiro objeto na lista que corresponde ao predicado ou nil se nenhum objeto corresponder.

    Declaração

    Swift

    public func index(matching predicate: NSPredicate) -> Int?

    Parâmetros

    predicate

    O predicado com o qual filtrar os objetos.

Recuperação de objetos

  • Retorna o objeto no índice fornecido (obter) ou substitui o objeto no índice fornecido (conjunto).

    Aviso

    Você só pode definir um objeto durante uma transação de escrita.

    Declaração

    Swift

    public subscript(position: Int) -> Element { get set }

    Parâmetros

    index

    O índice do objeto a ser recuperado ou substituído.

  • Retorna o primeiro objeto na lista ou nil se a lista estiver vazia.

    Declaração

    Swift

    public var first: Element? { get }
  • Retorna o último objeto na lista ou nil se a lista estiver vazia.

    Declaração

    Swift

    public var last: Element? { get }

KVC

  • Retorna um Array contendo os resultados de invocar valueForKey(_:) utilizando key em cada um dos objetos da coleção.

    Declaração

    Swift

    @nonobjc
    public func value(forKey key: String) -> [AnyObject]
  • Retorna um Array contendo os resultados de invocar valueForKeyPath(_:) utilizando keyPath em cada um dos objetos da coleção.

    Declaração

    Swift

    @nonobjc
    public func value(forKeyPath keyPath: String) -> [AnyObject]

    Parâmetros

    keyPath

    O caminho da chave para a propriedade cujos valores são desejados.

  • Invoca setValue(_:forKey:) em cada um dos objetos da coleção utilizando o value e key especificados.

    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.

Filtragem

  • Retorna um Results contendo todos os objetos que correspondem ao predicado fornecido na lista.

    Declaração

    Swift

    public func filter(_ predicate: NSPredicate) -> Results<Element>

    Parâmetros

    predicate

    O predicado com o qual filtrar os objetos.

Classificação

  • Retorna um Results contendo os objetos na lista, mas classificados.

    Os objetos são classificados com base nos valores do caminho da chave fornecido. Por exemplo, para classificar uma lista de Students do mais novo para o mais antigo com base em sua propriedade age , você pode chamar students.sorted(byKeyPath: "age", ascending: true).

    Aviso

    As listas só podem ser classificadas por propriedades de boolean, 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<Element>

    Parâmetros

    keyPath

    O caminho da chave para classificar por.

    ascending

    A direção para classificar.

  • Retorna um Results contendo os objetos na lista, mas classificados.

    Aviso

    As listas só podem ser classificadas por propriedades de boolean, Date, NSDate, ponto flutuante de precisão única e dupla, inteiro e string.

    Declaração

    Swift

    public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Element>
        where S.Iterator.Element == SortDescriptor

Operações agregadas

  • Retorna o valor mínimo (mais baixo) de uma propriedade fornecida entre todos os objetos na lista ou nil se a lista estiver vazia.

    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) de determinada propriedade entre todos os objetos na lista ou nil se a lista estiver vazia.

    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áximo é desejado.

  • Retorna a soma dos valores de uma determinada propriedade sobre todos os objetos na lista.

    Aviso

    Somente uma propriedade cujo tipo esteja em conformidade com o protocolo AddableType pode ser especificada.

    Declaração

    Swift

    public func sum<T>(ofProperty property: String) -> T where T : AddableType

    Parâmetros

    property

    O nome de uma propriedade cujos valores devem ser somados.

  • Retorna o valor médio de uma determinada propriedade sobre todos os objetos na lista ou nil se a lista estiver vazia.

    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 cujo valor médio deve ser calculado.

Mutação

  • Anexa o objeto fornecido ao final da lista.

    Se o objeto for managed por um Realm diferente do receptor, uma cópia será feita e adicionada ao Realm que managed o receptor.

    Aviso

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

    Declaração

    Swift

    public func append(_ object: Element)

    Parâmetros

    object

    Um objeto.

  • Anexa os objetos na sequência fornecida ao final da lista.

    Aviso

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

    Declaração

    Swift

    public func append<S>(objectsIn objects: S) where Element == S.Element, S : Sequence
  • Insere um objeto no índice fornecido.

    Aviso

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

    Aviso

    Este método lançará uma exceção se for chamado com um índice inválido.

    Declaração

    Swift

    public func insert(_ object: Element, at index: Int)

    Parâmetros

    object

    Um objeto.

    index

    O índice no qual inserir o objeto.

  • Remove um objeto no índice fornecido. O objeto não é removido do Realm que o managed.

    Aviso

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

    Aviso

    Este método lançará uma exceção se for chamado com um índice inválido.

    Declaração

    Swift

    public func remove(at index: Int)

    Parâmetros

    index

    O índice no qual remover o objeto.

  • Remove todos os objetos da lista. 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()
  • Substitui um objeto no índice fornecido por um novo objeto.

    Aviso

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

    Aviso

    Este método lançará uma exceção se for chamado com um índice inválido.

    Declaração

    Swift

    public func replace(index: Int, object: Element)

    Parâmetros

    index

    O índice do objeto a ser substituído.

    object

    Um objeto.

  • Move o objeto no índice de origem fornecido para o índice de destino fornecido.

    Aviso

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

    Aviso

    Este método lançará uma exceção se for chamado com índices inválidos.

    Declaração

    Swift

    public func move(from: Int, to: Int)

    Parâmetros

    from

    O índice do objeto a ser movido.

    to

    índice para o qual o objeto em from deve ser movido.

  • Troca os objetos na lista em determinados índices.

    Aviso

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

    Aviso

    Este método lançará uma exceção se for chamado com índices inválidos.

    Declaração

    Swift

    public func swapAt(_ index1: Int, _ index2: Int)

    Parâmetros

    index1

    O índice do objeto que deve substituir o objeto no índice index2.

    index2

    O índice do objeto que deve substituir o objeto no índice index1.

Notificações

  • Registra um bloco a ser chamado cada vez que a collection for alterada.

    O bloco será chamado de forma assíncrona com os resultados iniciais e, em seguida, chamado novamente após cada transação de gravação que altere qualquer um dos objetos da coleção ou quais objetos estão na coleção.

    O parâmetro change que é passado para o bloco reporta, na forma de índices dentro da collection, quais dos objetos foram adicionados, removidos ou modificados durante cada transação de escrita. Consulte a documentação do RealmCollectionChange para obter mais informações sobre as informações de alteração fornecidas e um exemplo de como usá-las para atualizar um UITableView .

    No momento em que o bloqueio for chamado, a coleção será totalmente avaliada e atualizada e, desde que você não execute uma transação de gravação na mesma thread ou chame explicitamente realm.refresh() , acessá-la 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 results = realm.objects(Dog.self)
    print("dogs.count: \(dogs?.count)") // => 0
    let token = dogs.observe { changes in
        switch changes {
        case .initial(let dogs):
            // Will print "dogs.count: 1"
            print("dogs.count: \(dogs.count)")
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        let dog = Dog()
        dog.name = "Rex"
        person.dogs.append(dog)
    }
    // 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? = nil,
                        _ block: @escaping (RealmCollectionChange<List>) -> 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.

Objetos congelados

Lista

  • 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<List> { get }
  • O tipo dos objetos armazenados dentro da lista.

    Declaração

    Swift

    public typealias ElementType = Element

Suporte a sequências

  • Retorna um RLMIterator que produz elementos sucessivos no List.

    Declaração

    Swift

    public func makeIterator() -> RLMIterator<Element>
  • Substitua os subRange elementos fornecidos por newElements.

    Declaração

    Swift

    public func replaceSubrange<C: Collection, R>(_ subrange: R, with newElements: C)
        where C.Iterator.Element == Element, R: RangeExpression, List<Element>.Index == R.Bound

    Parâmetros

    subrange

    O intervalo de elementos a serem substituídos.

    newElements

    Os novos elementos a serem inseridos na Lista.

  • A posição do primeiro elemento em uma coleção não vazia. Idêntico ao endIndex em uma coleta vazia.

    Declaração

    Swift

    public var startIndex: Int { get }
  • A posição "além do final" da collection. endIndex não é um argumento válido para subscrito e está sempre acessível a partir de startIndex por zero ou mais aplicações de sucessor ().

    Declaração

    Swift

    public var endIndex: Int { get }
  • Declaração

    Swift

    public func index(after i: Int) -> Int
  • Declaração

    Swift

    public func index(before i: Int) -> Int

Conformidade com MutableCollection, emulação de collection substituível por faixa

  • Declaração

    Swift

    public typealias SubSequence = Slice<List>
  • Retorna os objetos na faixa fornecida (get) ou substitui os objetos na faixa fornecida por novos objetos (set).

    Aviso

    Objeto só podem ser definidos durante uma transação de escrita.

    Declaração

    Swift

    public subscript(bounds: Range<Int>) -> SubSequence { get set }

    Parâmetros

    index

    O índice do objeto a ser recuperado ou substituído.

  • Remove o número especificado de objetos do início da lista. 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

    public func removeFirst(_ number: Int = 1)
  • Remove o número especificado de objetos do final da lista. 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

    public func removeLast(_ number: Int = 1)
  • Insere os itens na collection fornecida na lista na posição fornecida.

    Aviso

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

    Declaração

    Swift

    public func insert<C>(contentsOf newElements: C, at i: Int) where Element == C.Element, C : Collection
  • Remove objetos da lista na faixa fornecida.

    Aviso

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

    Declaração

    Swift

    public func removeSubrange<R>(_ boundsExpression: R) where R : RangeExpression, R.Bound == Int

Disponível onde Element: MinMaxType

  • Retorna o valor mínimo (mais baixo) na lista ou nil se a lista estiver vazia.

    Declaração

    Swift

    public func min() -> Element?
  • Retorna o valor máximo (mais alto) na lista ou nil se a lista estiver vazia.

    Declaração

    Swift

    public func max() -> Element?

Disponível onde Element: AddableType

Disponível onde Element: Decodable

Disponível onde Element: Encodable