2011-09-21 9 views
6

Recibo muchos informes de fallos sobre un bloqueo de especificación pero no tengo ni idea de dónde empezar para solucionarlo, ya que no puedo reproducirlo y los informes de fallos se enviaron de forma anónima.Bloquea la aplicación con NSRangeException _PFBatchFaultingArray usando NSFetchedResultsController

Como verás, tiene algo que ver con el NSFetchedResultsController que estoy usando.

Aquí hay un extracto de ese informe de fallas. La única diferencia entre los informes es el rango de los índices [...]index (someLargeIndex) beyond bounds (1)[...]. El resto permanece igual en todos los informes.

Application Specific Information: 
*** Terminating app due to uncaught exception \\\'NSRangeException\\\', reason: \\\'*** -[_PFBatchFaultingArray objectAtIndex:]: index (262144) beyond bounds (1)\\\' 

Thread 0 Crashed: 
0 libsystem_kernel.dylib    0x31d1e00c __kill + 8 
1 libsystem_c.dylib     0x32ac4f95 raise + 17 
2 AppName        0x0003d961 uncaught_exception_handler (PLCrashReporter.m:137) 
3 CoreFoundation      0x349b57d3 __handleUncaughtException + 239 
4 libobjc.A.dylib      0x33f9506b _objc_terminate + 103 
5 libstdc++.6.dylib     0x3338ae3d __cxxabiv1::__terminate(void (*)()) + 53 
6 libstdc++.6.dylib     0x3338ae91 std::terminate() + 17 
7 libstdc++.6.dylib     0x3338af61 __cxa_throw + 85 
8 libobjc.A.dylib      0x33f93c8b objc_exception_throw + 71 
9 CoreFoundation      0x349b5491 +[NSException raise:format:arguments:] + 69 
10 CoreFoundation      0x349b54cb +[NSException raise:format:] + 35 
11 CoreData       0x34820fc5 -[_PFBatchFaultingArray objectAtIndex:] + 133 
12 CoreData       0x3485e5fb -[_PFMutableProxyArray objectAtIndex:] + 55 
13 CoreData       0x348e00f7 +[NSFetchedResultsController(PrivateMethods) _insertIndexForObject:inArray:lowIdx:highIdx:sortDescriptors:] + 99 
14 CoreData       0x348e0605 -[NSFetchedResultsController(PrivateMethods) _postprocessInsertedObjects:] + 353 
15 CoreData       0x348e0ecf -[NSFetchedResultsController(PrivateMethods) _postprocessUpdatedObjects:] + 507 
16 CoreData       0x348e29c7 -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:] + 1239 
17 Foundation       0x35f46183 _nsnote_callback + 143 
18 CoreFoundation      0x3498420f __CFXNotificationPost_old + 403 
19 CoreFoundation      0x3491eeeb _CFXNotificationPostNotification + 119 
20 Foundation       0x35f435d3 -[NSNotificationCenter postNotificationName:object:userInfo:] + 71 
21 CoreData       0x34884c07 -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:] + 55 
22 CoreData       0x34884fcd -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:] + 141 
23 CoreData       0x34845251 -[NSManagedObjectContext(_NSInternalChangeProcessing) _postRefreshedObjectsNotificationAndClearList] + 77 
24 CoreData       0x34844f7f -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 1815 
25 CoreData       0x348863a5 -[NSManagedObjectContext processPendingChanges] + 17 
26 CoreData       0x3482027f _performRunLoopAction + 127 
27 CoreFoundation      0x3498ca35 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 17 
28 CoreFoundation      0x3498e465 __CFRunLoopDoObservers + 413 
29 CoreFoundation      0x3498f75b __CFRunLoopRun + 855 
30 CoreFoundation      0x3491fec3 CFRunLoopRunSpecific + 231 
31 CoreFoundation      0x3491fdcb CFRunLoopRunInMode + 59 
32 GraphicsServices     0x3354641f GSEventRunModal + 115 
33 GraphicsServices     0x335464cb GSEventRun + 63 
34 UIKit        0x3357dd69 -[UIApplication _run] + 405 
35 UIKit        0x3357b807 UIApplicationMain + 671 
36 AppName        0x00002b69 main (main.m:15) 

Lo siento, no puedo proporcionar más información. ¿Alguna sugerencia de cómo comenzar?

+0

[_PFBatchFaultingArray objectAtIndex:]: índice (262144) más allá de los límites (1) Tiene que ver con sus matrices, acceso 262144 índice de la matriz _PFBatchFaultingArray que sólo tiene 2 elementos (grada 1) Yo diría que mires otros hilos de tu informe de fallos. – ARC

+0

¿Ya lo descubrió? No puedo encontrar la respuesta en ningún lado –

Respuesta

1

intente buscar en su cellForRowAtIndexPath: o donde sea que use los resultados del NSFetchedResultsController. Allí, utilice el siguiente código para ver cuántos resultados están disponibles para usted:

NSArray *sections = fetchController.sections; 
int someSection = 0; 
id <NSFetchedResultsSectionInfo> sectionInfo = [sections objectAtIndex:someSection]; 
numberOfObjects = [sectionInfo numberOfObjects]; 

y luego ir al lugar donde se intenta obtener la información, probablemente, donde se llama a:

[fetchedResultsController objectAtIndexPath:indexPath]; 

y ver lo que pasa sobre: ​​

NSLog(@"row to be retrieved: %d", indexPath.row); 
[fetchedResultsController objectAtIndexPath:indexPath]; //here comes the crash 

Con el tiempo, se puede comprobar

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

para ver cuántas filas se están devolviendo.

Cuestiones relacionadas