filtrado de contenido para UITableView

Estaba mirando el código de ejemplo de TableSearch de Apple. Parece que tienen un NSArray para todo el contenido y un NSMutableArray para el contenido filtrado. Y luego, si el filter está activado, mostrarían NSMutableArray. Si está desactivado, mostrarían el NSArray que tiene todos los datos.

1) Me preguntaba si esta es una implementación común para los filters, ya que no he hecho mucho filtrado antes.

2) Para agregar a esa pregunta, si tuviera un filter de cuatro categorías diferentes, ¿seguiría usando un NSMutableArray que muestra el contenido filtrado cuando el filter está activado? O creo cuatro NSMutableArrays diferentes para cada tipo de filter diferente, y luego muestro esa list dependiendo de qué filter está activado.

Suponiendo que la implementación común es tener un NSArray para la list, me estoy confundiendo si crear arrays de list filtrada por adelantado es costoso si tuviera que hacer cuatro NSMutableArrays diferentes, o si dependiendo del clic del usuario de lo que opción de filter que seleccionan, si creo el NSMutableArray sobre la marcha, y luego [tableView reloadData]; cargar el [tableView reloadData];

Gracias.

No tengo esa aplicación de ejemplo delante de mí, pero normalmente filtrarías usando un pnetworkingicado, por lo que sería útil que revises los documentos en NSPnetworkingicate .

Entonces, cuando quiera cambiar el filter, hágalo cambiando el pnetworkingicado. No tiene que crear todos los resultados filtrados. Solo creas el que necesitas en cualquier momento.

Con matrices, puede filtrar utilizando un código como el que se muestra en este ejemplo . Las líneas key son

 NSPnetworkingicate *pnetworkingicate; pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"length == 9"]; NSArray *myArray2 = [myArray filtenetworkingArrayUsingPnetworkingicate:pnetworkingicate]; 

El filtrado no siempre se realiza con matrices. Se puede hacer con NSFetchedResultsControllers si se usa Core Data. Los prédicos también se usan allí, de la misma manera. Los pnetworkingicados también pueden usarse para otras cosas, incluido el filtrado de expresiones regulares. Vale la pena mirar, si no estás familiarizado con él.

Realmente depende Si sus datos subyacentes se encuentran en Datos básicos, use NSFetchedResultsController y entrégueles NSPnetworkingicate . Si tiene una matriz de datos, puede ser más fácil recorrerla y crear otra matriz de datos.

En general, es probable que el filter en sí mismo no sea tan caro como el process general de dibujo (que incluye crear instantáneas o reciclar celdas de tabla). Puedes hacer lo que es fácil y perfilar con Instruments.

Mantener cuatro arrays diferentes normalmente no es una buena idea en términos de memory, que es un recurso escaso.

Sin importar qué, reloadData va a estar involucrado. (Dependiendo de la versión del sistema operativo, tal vez, consulte los documentos de NSFetchedResultsController ).