2013-03-05 2 views
0

Я сохраняю ManagedObject в фоновом потоке со своим собственным контекстом. Затем я хотел бы отправить уведомление обратно в основной поток с контекстом управляемого объекта, чтобы я мог использовать его данные.Как передать ManagedObjectID в основной поток

Согласно документам, похоже, что вместо этого я должен передавать идентификатор в основной поток, а не в объект.

Правильно ли, что мне делать с этим идентификатором? Должен ли я делать выборку из основных данных из основного потока с идентификатором, чтобы получить ManagedObject в основном потоке?

+0

МО не может быть передачей между потоками. Это нарушит сдерживание. Использовать идентификатор объекта, как показано ниже. –

ответ

3

Вы правильно понимаете прохождение идентификатора объекта обратно в основной поток. После того, как вы это сделали, используйте метод objectWithID:, передав NSManagedObjectID, отправленный из другого потока, чтобы получить объект из примера NSManagedObjectContext основного потока.

NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID]; 
+0

Будет ли objectWithID извлекать объект с диска, если контекст его еще не имеет? – jarryd

+0

Что задает значение NSManagedObjectID? Я создаю объект подкласса NSManagedObject, который у меня есть, и после его сохранения мне нужно отправить идентификатор, но я не установил идентификатор. Он устанавливается в методе сохранения? – jarryd

+0

Извините, я думаю, что неправильно понял ваш вопрос. Сегодня вечером я попытаюсь рассмотреть весь поток, так как мне придется провести небольшое исследование, чтобы дать вам полную картину. –

1

Альтернативный способ заключается в использовании следующий метод

- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error 

Этот метод никогда не возвращает ошибку для этого объекта.

В вашей задней нити сделайте спасение. Использование этого метода позволит восстановить объект, сохраненный в фоновом режиме.

См. NSManagedObjectContext class reference.

+0

@ Helium3 см. Также http://stackoverflow.com/questions/3006394/whats-the-difference-between-existingobjectwithiderror-and-objectwithid –

Смежные вопросы