Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Filtrar dados - SwiftUI

Nesta página

  • Observe nas visualizações da SwiftUI
  • Pesquise uma coleção de domínios
  • Filtre ou consulte um domínio com ObservedResults
  • Filtrar com um NSPredicate
  • Executar uma query com a API Realm Type-Safe Query
  • Resultados filtrados da seção

O wrapper de propriedade @ObservedResults usado nos exemplos desta página destina-se ao uso em um modo de exibição SwiftUI. Se você quiser observar os resultados em um modelo de exibição, registre um ouvinte de alterações.

Novidades na versão 10,19,0.

O Realm Swift SDK permite estender.searchable. Ao usar ObservedResults para executar uma query de um Realm, você pode especificar a coleção e o caminho chave no conjunto de resultados para marcá-lo como pesquisável.

A coleção é a coleção vinculada representada pela query ObservedResults. Neste exemplo, é a variável dogs que representa a coleção de todos os objetos de cão no domínio.

O caminho chave é a propriedade de objeto que você deseja pesquisar. Neste exemplo, pesquisamos a coleção de cães pelo nome do cão. A implementação do Realm Swift .searchable suporta somente keypaths com String tipos.

struct SearchableDogsView: View {
@ObservedResults(Dog.self) var dogs
@State private var searchFilter = ""
var body: some View {
NavigationView {
// The list shows the dogs in the realm.
List {
ForEach(dogs) { dog in
DogRow(dog: dog)
}
}
.searchable(text: $searchFilter,
collection: $dogs,
keyPath: \.name) {
ForEach(dogs) { dogsFiltered in
Text(dogsFiltered.name).searchCompletion(dogsFiltered.name)
}
}
}
}
}

O wrapper da propriedade @ObservedResults abre um domínio e retorna todos os objetos do tipo especificado. No entanto, você pode filtrar ou executar uma query @ObservedResults para usar somente um subconjunto dos objetos em sua visualização.

Dica

Veja também:

Para obter mais informações sobre a sintaxe de query e os tipos de query compatíveis com o Realm, consulte: Ler - Swift SDK e Filtrar dados - Swift SDK.

Para filtrar @ObservedResults usando a API de query NSPredicate, passe um NSPredicate como argumento para filter:

struct FilterDogsViewNSPredicate: View {
@ObservedResults(Dog.self, filter: NSPredicate(format: "weight > 40")) var dogs
var body: some View {
NavigationView {
// The list shows the dogs in the realm.
List {
ForEach(dogs) { dog in
DogRow(dog: dog)
}
}
}
}
}

Novidades na versão 10.24.0: Use onde para realizar queries seguras contra erros de digitação em ObservedResults.

Para usar @ObservedResults com a API Realm Type-Safe Query, passe uma query em um fechamento como argumento para where:

struct FilterDogsViewTypeSafeQuery: View {
@ObservedResults(Dog.self, where: ( { $0.weight > 40 } )) var dogs
var body: some View {
NavigationView {
// The list shows the dogs in the realm.
List {
ForEach(dogs) { dog in
DogRow(dog: dog)
}
}
}
}
}

Novidades na versão 10,29,0.

O wrapper da propriedade @ObservedSectionedResults abre um domínio e retorna todos os objetos do tipo especificado, dividido em seções pelo caminho da chave especificado. Semelhante a @ObservedResults acima, você pode filtrar ou executar uma query @ObservedSectionedResults para usar somente um subconjunto dos objetos em sua visualização:

@ObservedSectionedResults(Dog.self,
sectionKeyPath: \.firstLetter,
where: ( { $0.weight > 40 } )) var dogs

Voltar

Gravar dados