Я провел пару часов сегодня, пытаясь создать настройку, в которой у меня есть три контекста управляемых объектов: один прикреплен к делегату моего приложения, один в подклассе NSObject
, отвечающий за обновления UITableView
(через NSFetchedResultsController
) и один в NSOperation
подкласс.Как я могу синхронизировать несколько NSManagedContext?
я могу получить изменения от NSOperation
подкласса к приложению делегата течь через просто отлично, наблюдая NSManagedObjectContextDidSaveNotification
и стреляя mergeChangesFromContextDidSaveNotification:
на основном потоке, но когда я пытаюсь сделать то же самое с моей UITableView
источника данных, Я получаю следующее исключение:
2010-02-19 02:00:39.750 MyApp[44687:207] Serious application error. Exception was caught during Core Data change processing: *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0] with userInfo (null)
2010-02-19 02:00:39.750 MyApp[44687:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]'
Я был бы признателен за любые советы - все мои предыдущие проекты с участием управляемого объекта основных данных контексты очень просто 1: 1 сценариев синхронизации. Возможно ли, что я предлагаю?
Вы использовали отладчик? Что это говорит о вашей попытке вставить nil в NSArray? В частности, сломайте objc_exception_throw и определите часть своего кода, вызывающего эту проблему. –
Джошуа, это на самом деле идет от: - (Недействительными) контроллер: (NSFetchedResultsController *) контроллер didChangeObject: (идентификатор) anObject atIndexPath: (NSIndexPath *) indexPath forChangeType: (NSFetchedResultsChangeType) типа newIndexPath: (NSIndexPath *) newIndexPath { \t NSArray * paths = [NSArray arrayWithObject: newIndexPath]; По-видимому, NSArray не может быть инициализирован indexPath из {0,0}. Все еще выясняю, почему это происходит. –