Docs Menu
Docs Home
/ /
Interfaz de usuario rápida

Filtrar datos - SwiftUI

El @ObservedResults El contenedor de propiedades utilizado en los ejemplos de esta página está diseñado para usarse en una vista de SwiftUI. Si prefiere observar los resultados en un modelo de vista, registre un detector de cambios.

Nueva en la versión 10.19.0.

El SDK de Realm Swift le permite ampliar .buscableCuando utiliza ObservedResults para consultar un reino, puede especificar la colección y la ruta de clave en el conjunto de resultados para marcarlo como buscable.

La colección es la colección enlazada representada por la consulta ObservedResults. En este ejemplo, la variable dogs representa la colección de todos los objetos Dog del dominio.

La ruta de acceso es la propiedad del objeto que desea buscar. En este ejemplo, buscamos la colección de perros por su nombre. La implementación de Realm Swift .searchable solo admite rutas de acceso con tipos String.

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)
}
}
}
}
}

El contenedor de propiedades @ObservedResults abre un dominio y devuelve todos los objetos del tipo especificado. Sin embargo, puede filtrar o consultar @ObservedResults para usar solo un subconjunto de los objetos de su vista.

Tip

Para obtener más información sobre la sintaxis de consulta y los tipos de consultas que admite Realm, consulte: Leer - Swift SDK y Filtrar datos - Swift SDK.

Para filtrar @ObservedResults utilizando la API de consulta NSPredicate, pase un NSPredicate como argumento filter a:

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)
}
}
}
}
}

Novedad en la 10.24.0 versión: utilice where para realizar consultas de tipos seguros en ObservedResults.

Para usar @ObservedResults con la API de consulta de tipo seguro Realm, pase una consulta en un cierre como argumento where a:

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)
}
}
}
}
}

Nuevo en la versión 10.29.0.

El contenedor de propiedad @ObservedSectionedResults abre un Realm y devuelve todos los objetos del tipo especificado, divididos en secciones por la ruta de clave especificada. Similar a @ObservedResults anterior, puedes filtrar o query @ObservedSectionedResults para usar solo un subconjunto de los objetos en tu vista:

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

Volver

Escritura de datos

En esta página