Я разрабатываю приложение iPhone с основными данными. Все пользовательские данные должны быть синхронизированы с нашими серверами. Для этого я создал подкласс NSOperation, который загружает новые данные из нашей веб-службы и создает соответствующие управляемые объекты. Чтобы поддерживать отношения между ними, каждый объект передается с помощью remoteID (который является первичным ключом базы данных реляционного сервера).Основные данные executeFetchRequest бросает NSGenericException (коллекция была мутирована при перечислении)
Скажем, есть два управляемых объекта: Отдел < - >> Сотрудник. Синхронизация работает следующим образом:
Загрузить все отделы с сервера. Для каждого отдела: создайте объект отдела и установите его remoteID.
Загрузить все сотрудники с сервера. Для каждого сотрудника: создайте объект Employee, выберите соответствующий отдел (remoteID) и назначьте его сотруднику.
Извлечение отдела приводит к следующему исключению:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x69c8a10> was mutated while being enumerated.<CFBasicHash 0x69c8a10 [0x2d6d380]>{type = mutable set, count = 1424,
entries => <A list of all newly created entities>
*** Call stack at first throw:
0 CoreFoundation 0x02d04919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x02e525de objc_exception_throw + 47
2 CoreFoundation 0x02d043d9 __NSFastEnumerationMutationHandler + 377
3 CoreData 0x026225d0 -[NSManagedObjectContext executeFetchRequest:error:] + 4400
4 myApp 0x00059de4 +[AppFactory departmentWithRemoteID:inManagedObjectContext:] + 259
Исключения не выброшено каждый раз. Перемещение кода в основной поток устраняет проблему. Я понятия не имею, что случилось. Я создал новый NSManagedObjectContaxt в потоке синхронизации и передал все управляемые объекты своим NSManagedObjectID.
Любые мысли?
для меня это может быть причиной такого рода проблем. Каков наилучший способ решения таких проблем, у вас есть идея @octy? –
Приятно, хороший ответ на ваш вопрос был предоставлен в связанном обсуждении: http://stackoverflow.com/questions/3364769/iphone-nsfetchedresultscontroller-with-delegate-and-data-update-from-a-separate – octy