historial como cache borrar aplicaciones iphone ios objective-c core-data nsfetchedresultscontroller

iphone - como - Caída de iOS ''NSInternalInconsistencyException'', motivo: ''la declaración todavía está activa'' ¿Está relacionado el caché de datos del núcleo?



borrar historial safari iphone (2)

Muy ocasionalmente, NSFetchedResultsController estos elementos emergentes en los informes de NSFetchedResultsController en las pantallas con NSFetchedResultsController , y no estoy seguro de cómo abordarlos. No creo que esté usando subprocesos en ningún lado, a menos que NSFetchedResults esté usando internamente.

''NSInternalInconsistencyException'', motivo: ''la declaración está todavía activa'' es la explicación completa que recibí.

Dos rastros de pila recientes:

0 CoreFoundation 0x37a368bf __exceptionPreprocess + 163 1 libobjc.A.dylib 0x3151c1e5 objc_exception_throw + 33 2 CoreData 0x340b2ea5 -[NSSQLiteStatement cachedSQLiteStatement] + 1 3 CoreData 0x340b274f -[NSSQLiteConnection prepareSQLStatement:] + 55 4 CoreData 0x34156049 -[NSSQLChannel selectRowsWithCachedStatement:] + 61 5 CoreData 0x34181d63 newFetchedRowsForFetchPlan_MT + 783 6 CoreData 0x340bab07 -[NSSQLCore newRowsForFetchPlan:] + 351 7 CoreData 0x34160011 -[NSSQLCore fetchRowForObjectID:] + 1005 8 CoreData 0x340cca57 -[NSSQLCore newValuesForObjectWithID:withContext:error:] + 195 9 CoreData 0x340cbf83 _PFFaultHandlerLookupRow + 423 10 CoreData 0x340cba97 _PF_FulfillDeferredFault + 187 11 CoreData 0x340cb94f _sharedIMPL_pvfk_core + 39 12 PowerPro 0x0006a779 -[GuestCard getPrimaryProspectiveTenant] (GuestCard.m:77) 13 PowerPro 0x00017bf9 -[OutstandingFollowupsViewController configureCell:atIndexPath:] (OutstandingFollowupsViewController.m:208) 14 PowerPro 0x00017b9b -[OutstandingFollowupsViewController tableView:cellForRowAtIndexPath:] (OutstandingFollowupsViewController.m:203) Last Exception Backtrace: 0 CoreFoundation 0x37a368bf __exceptionPreprocess + 163 1 libobjc.A.dylib 0x3151c1e5 objc_exception_throw + 33 2 CoreData 0x340b2ea5 -[NSSQLiteStatement cachedSQLiteStatement] + 1 3 CoreData 0x340b274f -[NSSQLiteConnection prepareSQLStatement:] + 55 4 CoreData 0x34156049 -[NSSQLChannel selectRowsWithCachedStatement:] + 61 5 CoreData 0x340c26eb -[NSSQLCore _newRowsForFetchPlan:selectedBy:withArgument:] + 515 6 CoreData 0x340bab3f -[NSSQLCore newRowsForFetchPlan:] + 407 7 CoreData 0x3415ea55 -[NSSQLCore newFetchedPKsForSourceID:andRelationship:] + 2217 8 CoreData 0x3416a935 -[NSSQLCore newValueForRelationship:forObjectWithID:withContext:error:] + 689 9 CoreData 0x34108f8b -[NSFaultHandler retainedFulfillAggregateFaultForObject:andRelationship:withContext:] + 479 10 CoreData 0x340dcb23 -[_NSFaultingMutableSet willRead] + 219 11 CoreData 0x340dc70b -[_NSFaultingMutableSet count] + 23 12 PowerPro 0x00016eb1 -[BrowseGuestCardsViewController configureCell:atIndexPath:] (BrowseGuestCardsViewController.m:246) 13 PowerPro 0x00017173 -[BrowseGuestCardsViewController tableView:cellForRowAtIndexPath:] (BrowseGuestCardsViewController.m:222) 14 UIKit 0x34e4e9cb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 547 15 UIKit 0x34e4daa9 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1077 16 UIKit 0x34e4d233 -[UITableView layoutSubviews] + 207 17 UIKit 0x34df1d4b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 183 18 CoreFoundation 0x3799522b -[NSObject performSelector:withObject:] + 43 19 QuartzCore 0x3318c381 -[CALayer layoutSublayers] + 217 20 QuartzCore 0x3318bf99 CA::Layer::layout_if_needed(CA::Transaction*) + 217 21 QuartzCore 0x3318bea5 -[CALayer layoutIfNeeded] + 153 22 UIKit 0x34eb6fe1 -[UIButton titleLabel] + 73 23 PowerPro 0x00017983 -[BrowseGuestCardsViewController viewDidLoad] (BrowseGuestCardsViewController.m:75)


Es más que probable que esto sea un problema de subprocesos de alguna manera u otra. No hay suficiente información en la pregunta para ver con certeza, pero vale la pena revisar los registros de fallos y mirar los seguimientos de la pila de todos los subprocesos en el momento de la excepción, y ver si hay otros subprocesos que hagan algo que interactúe con un objeto gestionado. Podría ser que tenga un controlador de notificaciones, un controlador de finalización de la conexión de URL o algún otro bit de código que utilice la concurrencia que no había notado, utilizando objetos de datos centrales en segundo plano. Vale la pena señalar que establecer o acceder a cualquier propiedad en cualquier objeto administrado desde un contexto que se usa en más de un subproceso podría desencadenar este tipo de excepción, lo que puede hacer que sea bastante difícil de diagnosticar.

La solución relativamente simple para resolver estos problemas en la mayoría de las aplicaciones es impulsar la ejecución de ese código al hilo principal (utilizando dispatch_async() ). Alternativamente, si tiene mucho procesamiento que hacer, podría ser mejor crear un contexto secundario en el hilo de fondo y volver a buscar el objeto desde el contexto secundario, luego guardar el contexto secundario. Por supuesto, para volver a buscar el objeto, necesita tener su objectID , que es una propiedad a la que solo se puede acceder en el hilo en el que el objeto se recuperó originalmente en ...


Obtuve este error al mismo tiempo que solicitaba datos con NSFetchedResultController (desde el contexto del hilo principal) y NSFetchRequest a través de mi contexto de fondo.

La forma en que he manejado esto es haciendo que cada uno de mis MOC tenga su propio coordinador de tienda persistente. Ambos coordinadores de la tienda persistente hablan con la misma tienda persistente en el disco.