Filtrar dados - SwiftUI
Nesta página
Observe nas visualizações da SwiftUI
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.
Pesquise uma coleção de domínios
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 { Dog.self) var dogs ( 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) } } } } }
Filtre ou consulte um domínio com ObservedResults
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.
Filtrar com um NSPredicate
Para filtrar @ObservedResults
usando a API de query NSPredicate, passe um NSPredicate como argumento para filter
:
struct FilterDogsViewNSPredicate: View { 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) } } } } }
Executar uma query com a API Realm Type-Safe Query
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 { 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) } } } } }
Resultados filtrados da seção
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:
Dog.self, ( sectionKeyPath: \.firstLetter, where: ( { $0.weight > 40 } )) var dogs