Mi aplicación tiene un UISearchBar que permite al usuario ingresar palabras clave de búsqueda. Cada pulsación de tecla ejecuta una consulta de Datos centrales para mostrar los resultados como texto en los cambios de la barra de búsqueda.¿Cómo mejorar el rendimiento de Core Data?
El problema es que las pulsaciones de teclas de la barra de búsqueda se están quedando bastante mal ... seguramente debido a la lenta búsqueda. ¿Alguna idea de cómo mejorar el rendimiento?
My Core Data está respaldado con el almacén de datos sqlite que contiene 1000 objetos.
// searchKeyword is the string appears in UISearchBar
// Both title and author may contain several words so I can't use BEGINSWITH
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(author CONTAINS[c] %@) OR (title CONTAINS[c] %@)", searchKeyword, searchKeyword];
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:managedObjectContext];
NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
[request setPredicate:predicate];
[request setFetchLimit:10];
NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray* sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
execute request and fetch the results
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
NSError* error = nil;
BOOL success = [fetchedResultsController performFetch:&error];
[request release];
¡Esta es una gran solución! ¡¡Gracias!! Buscaré esa sesión y la publicaré aquí si la encuentro. – Joshua
Enlace directo: http://developer.apple.com/itunes/?destination=adc.apple.com.4092349126.04109539109.4144345613?i=2041584141 Hmm .. Esperé mucho tiempo para su publicación. Mientras tanto, me encontré a mí mismo, luchando por Internet: D Está en "WWDC 2010, Optimización del rendimiento de datos principales en iPhone OS" a las 35:06 –
Lo siento, no pude encontrar el código de muestra relacionado (y soy un desarrollador registrado) . ¿Podría proporcionar un código corto cortado? (Normalización e incremento de char) – obiwahn