Я пытаюсь отфильтровать свой объект NSFetchedResultsController
при поиске в таблицеView. Я пробовал с NSPredicate
, но я не могу заставить его работать.
Я использую Swift 3.
Это мой код:iOS Swift - использовать данные сердечника предиката для фильтрации таблицыView
func filtrarContenido(searchText: String) {
let buscar = searchText.lowercased()
let nombrePredicate = NSPredicate(format: "nombre_comercial contains[cd] %@", buscar)
let razSocialPredicate = NSPredicate(format: "razon_social contains[cd] %@", buscar)
let predicate = NSCompoundPredicate(type: NSCompoundPredicate.LogicalType.or, subpredicates: [nombrePredicate, razSocialPredicate])
let respuesta = self.funcCoreData.obtenerResultadosFiltrados(entidad: "Clientes", orden: "nombre_comercial", ascendente: true, predicate: predicate)
self.resultadosFiltrados = respuesta[1] as! NSFetchedResultsController<NSManagedObject>
do {
try self.resultadosFiltrados.performFetch()
} catch {
print(" \(error)")
}
}
А вот функция в FuncCoreData файл, он возвращает массив с NSManagedObject
и NSFetchedResultsController
:
func obtenerResultadosFiltrados(entidad: String, orden: String, ascendente: Bool, predicate: NSPredicate) -> [AnyObject] {
let appDelegate = UIApplication.shared.delegate as? AppDelegate
let context = appDelegate?.persistentContainer.viewContext
let objeto = NSFetchRequest<NSManagedObject>(entityName: entidad)
let ordenacion = NSSortDescriptor(key: orden, ascending: ascendente)
objeto.sortDescriptors = [ordenacion]
objeto.predicate = predicate
print("OBJETO: ", objeto)
let recorrerResultados = NSFetchedResultsController<NSManagedObject>(fetchRequest: objeto, managedObjectContext: context!, sectionNameKeyPath: "seccionLetra", cacheName: nil)
var array = [AnyObject]()
array.append(objeto)
array.append(recorrerResultados)
return array
}
Ну, нет никакой ошибки, но поиск всегда возвращается пустым, я думаю, что мое выражение в предикате неверно: NSPredicate(format: "razon_social contains[cd] %@", buscar)
Кроме того, я хочу сделать это нечувствительным, что достигается с помощью ANY razon_social ..
?