There's no easy way to get Core Data to see unsaved data in another
context (on another thread).
For non-inserted objects, you can replicate the changes in the other
thread by passing a dictionary between the threads. Some methods
that can help do this:
In general, though, it's better to just not have the problem. If the
background thread makes a bunch of changes, save the batch, and pull
(fetch/objectWithID:) them onto the main thread.
Most apps don't require synchronously forcing the main thread to
update status from background threads in the middle of a task.
Accepting a little bit of staleness in the UI, and having it refresh
every few seconds, is usually acceptable.
If it's crucial, you can use proxies on the main thread, backed
either by a managed object (for saved changes), or an NSDictionary
(for unsaved changes).
--