Swift: Filtrado de una matriz de estructuras usando UISearchController / Pnetworkingicates

Me pregunto si alguien podría ayudarme con el filtrado utilizando pnetworkingicados en Swift.

Tengo un origen de datos algo desorderado que estoy utilizando para poblar una UITableView. La fuente de datos es una matriz de estructuras. La estructura se define de la siguiente manera:

struct Exercises { let category: String let name : String let x_seed: [Double] let y_seed: [Double] let hasMult: Bool } 

Ahora en mi controller de vista de tabla, tengo una matriz de estructuras que contiene todos los datos de la tabla.

 class MainTableViewController: UITableViewController, UISearchResultsUpdating { var exercises = [Exercises]() var filtenetworking_exercises = [Exercises]() var resultSearchController = UISearchController() override func viewDidLoad() { super.viewDidLoad() // MARK: - Table view data source self.exercises = [ Exercises(category:"Sports", name:"Bowling", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Water Polo", x_seed:[125,155,185], y_seed:[10.00, 12.40,14.80], hasMult:false), Exercises(category:"Sports", name:"Handball", x_seed:[125,155,185], y_seed:[12.00, 14.87, 17.77], hasMult:false), Exercises(category:"Sports", name:"Dancing", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:true), Exercises(category:"Sports", name:"Frisbee", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Volleyball", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Archery", x_seed:[125,155,185], y_seed:[3.50, 4.33, 5.17], hasMult:false), Exercises(category:"Sports", name:"Golf", x_seed:[125,155,185], y_seed:[3.50, 4.33, 5.17], hasMult:true)] self.resultSearchController = ({ let controller = UISearchController(searchResultsController: nil) controller.searchResultsUpdater = self controller.dimsBackgroundDuringPresentation = false controller.searchBar.sizeToFit() self.tableView.tableHeaderView = controller.searchBar return controller })() self.tableView.reloadData() } 

Lo que me gustaría hacer es filtrar la matriz de ejercicios en function del campo 'name' y rellenar una nueva fuente de datos filtenetworking_exercises para llenar la tableview. No estoy seguro de cómo enfocar mi cabeza sobre cómo usar los pnetworkingicados en esta situación.

 // Search functionality func updateSearchResultsForSearchController(searchController: UISearchController) { filtenetworking_exercises.removeAll(keepCapacity: false) let searchPnetworkingicate = NSPnetworkingicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!) // ?????????????? self.tableView.reloadData() } 

Sé que podía leer todos los nombres en una matriz de cadenas y mostrarlos fácilmente en la vista de tabla. El problema es que necesito preservar las estructuras ya que los datos contenidos allí se pasan a otros controlleres de vista.

Entonces, ¿cómo puedo filtrar una matriz de estructuras?

¡Gracias!

Si no insiste en NSPnetworkingicate (no ve una razón por la que debería, ya que no está utilizando NSFetchRequest , …), aquí está el código:

 struct Exercises { let category: String let name : String let x_seed: [Double] let y_seed: [Double] let hasMult: Bool } let exercises = [ Exercises(category:"Sports", name:"Bowling", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Water Polo", x_seed:[125,155,185], y_seed:[10.00, 12.40,14.80], hasMult:false), Exercises(category:"Sports", name:"Handball", x_seed:[125,155,185], y_seed:[12.00, 14.87, 17.77], hasMult:false), Exercises(category:"Sports", name:"Dancing", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:true), Exercises(category:"Sports", name:"Frisbee", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Volleyball", x_seed:[125,155,185], y_seed:[3.00, 3.73, 4.43], hasMult:false), Exercises(category:"Sports", name:"Archery", x_seed:[125,155,185], y_seed:[3.50, 4.33, 5.17], hasMult:false), Exercises(category:"Sports", name:"Golf", x_seed:[125,155,185], y_seed:[3.50, 4.33, 5.17], hasMult:true) ] let options = NSStringCompareOptions.CaseInsensitiveSearch | NSStringCompareOptions.DiacriticInsensitiveSearch // Filter exercises by name (case and diacritic insensitive) let filtenetworkingExercises = exercises.filter { $0.name.rangeOfString("Ol", options: options) != nil } let filtenetworkingExerciseNames = ", ".join(filtenetworkingExercises.map({ $0.name })) println(filtenetworkingExerciseNames) 

Imprime Water Polo, Voleibol, Golf .