el problema que estoy encontrando es la siguiente:datos básicos: Antecedentes traiga, NSFetchedResultsController y Ordenación tiempo
Tengo un UITableView
, que me alimento con los datos de un NSFetchedResultsController
que recupera alrededor de 6000 filas de datos básicos. El fetchBatchSize
del NSFetchRequest
se establece en 20 y si no aplica ningún NSSortDescriptor
, la recuperación es lo suficientemente rápida como para no bloquear el subproceso de la interfaz de usuario.
Sin embargo, yo necesito para mostrar los registros ordenados alfabéticamente para que uso el NSSortDescriptor siguiente:
[[[NSSortDescriptor alloc] initWithKey:@"optionText" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
Y aquí es cuando las cosas cambian, la operación de búsqueda ahora toma alrededor de 3 segundos para completar porque el 6000 las filas están siendo ordenadas Obviamente, durante esos segundos, la IU está bloqueada y la experiencia del usuario es terrible.
Sé que podría hacer la búsqueda en un hilo de fondo y luego pasar a los ID de objeto al hilo principal, pero en ese caso, ¿cómo podría seguir usando el NSFetchedResultsController
en el hilo principal (también lo estoy usando para observar cambios en los datos)?
También tengo indexed
atributo en el que estoy ordenando pero que solo optimiza las búsquedas y no clasifica el rendimiento.
¡Cualquier idea sería muy apreciada, gracias!
pregunta estúpida pero supongo que no puede ordenar previamente los datos antes de cargarlos en Core Data? –
Pregunta estúpida, en el momento en que ejecuta la solicitud de recuperación ¿cuál es el valor de managedObjectContext.hasChanges? – Drew