otrzymuję następujący błąd w mojej aplikacji:Rdzeń danych: stwierdzenie jest nadal aktywny
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. statement is still active with userInfo (null)
Wszystko, co mogę znaleźć zdaje się wskazywać, że mogą być problemy wielowątkowości z zarządzanym moje podstawowe dane obiektu kontekście, ale nie mogę znaleźć nigdzie w mojej aplikacji, gdzie by to miało miejsce. Uzyskuję dostęp do kontekstu zarządzanego obiektu i zarządzam nim w wątku tła. Kontekst tylko pobiera i manipuluje obiektami na tym jednym wątku tła. Po wykryciu zapisów do tego kontekstu za pomocą NSManagedObjectContextObjectsDidSaveNotification, scalam zmiany w innym kontekście, do którego mam dostęp tylko w głównym wątku. Kiedy wykonam połączenie scalające zmiany, błąd zostanie zgłoszony. Bardzo rzadko zdarza się to, nawet przy tych samych zestawach danych.
Czytałem gdzieś, że można "włączyć wielostronne asercje" za pomocą "-com.apple.CoreData.ThreadingDebug 3", ale nie byłem w stanie sprawić, żeby to działało. Czy ktoś wie, czy jest to możliwe? Miałem nadzieję, że to może włączyć pewne twierdzenia, które pomogłyby mi znaleźć miejsce, w którym gram z kontekstem na niewłaściwej nici lub czymś podobnym.
Jakieś inne wskazówki na temat tego, co może się dziać lub jak śledzić tego typu problemy?
czy moja odpowiedź pomogła? –
Przeczytałeś to w [TN2124: Mac OS X Debugging Magic] (https://developer.apple.com/library/ios/#technotes/tn2004/tn2124.html#SECCOREDATA). Kluczowy klucz to "Ta funkcja wymaga wariantu debugowania frameworka." Jeśli miałbyś ten wariant, możesz ustawić zmienną środowiskową 'DYLD_IMAGE_SUFFIX = _debug' i załadowałaby ona' CoreData_debug' zamiast 'CoreData' dla frameworka. Niestety, te warianty wydają się istnieć tylko dla OS X 10.5.x. :( –