У меня странное поведение при использовании вторичного потока для обновления содержимого NSFetchedResultsController, и я хотел бы знать, что это обычная проблема, иначе я могу что-то делать не так.
I у меня есть централизованный NSManagedObjectContext, находящийся в моем основном объекте делегата, который используется и совместно используется всеми контроллерами представления. После загрузки таблицы путем выполнения выборки и вызова ее метода делегата в фоновом режиме запускается вторичный поток для обновления результатов. Однако и только в странных случаях при вставке новых записей они дублируются в табличном представлении. Если я выхожу и снова вхожу, повторяющиеся строки исчезают, что заставляет думать, что они существовали только в контексте управляемого объекта.
Вот следующие шаги:
При сохранении в фоновом режиме вызывается метод уведомления. централизованный селектор mergeChangesFromContextDidSaveNotification контекста в основном потоке, как показано ниже.
- (void) mergeChanges: (NSNotification *) notification
{
NSManagedObjectContext * mainContext = [[appDelegate sharedDelegate] managedObjectContext];
[mainContext performSelectorOnMainThread: @selector (mergeChangesFromContextDidSaveNotification :)
withObject: уведомление
waitUntilDone: NO];
}
После завершения операции слушатель удаляется, а вторичный контекст освобождается.
Кто-нибудь знает, в чем причина дублирования строк в моем табличном представлении и как это можно решить?
Спасибо за за вашу помощь.