У меня были проблемы с Core Data и многопоточностью, и я должен сказать, что это сводит меня с ума. После прочтения некоторых блогов и Apple Docs, я увидел, что рекомендуемый способ - создать NSManagedObjectContext
(moc) для каждого потока и общий NSPersistentStoreCoordinator
. Но так как я использую NSOperations, а они не привязаны к конкретному потоку, я должен создать новый moc для каждой операции.
Таким образом, каждый раз, когда я создаю moc, я устанавливаю координатор магазина на mock и извлекаю из него некоторые данные. Затем, если мне нужно использовать объекты, которые я извлек в другом потоке, скажем, на переднем плане, например, я должен получить их снова, создав новый moc и используя existingObjectWithID:error:
.
Но, насколько мне известно, не существует метода, получающего массив идентификаторов объектов, поэтому я должен использовать этот вызов (existingObjectWithID:error:
) для каждого объекта, что означает, что он может зацикливаться некоторое время 100 раз, например.
Мой вопрос: это правильный путь? Я что-то пропустил? Это быстрее, чем напрямую получать данные из основного потока?
Большая часть информации, которую я нашел, касалась изменения данных в разных потоках, но я почти ничего не нашел о получении.
Заранее спасибо:)