Основные данные: синхронизация ManagedObjectContext в главном потоке с новым порожденным потоком - PullRequest
1 голос
/ 03 апреля 2012

У меня есть многопоточное приложение для iOS с фоновым потоком, который синхронизирует данные с облаком. Я прочитал несколько вопросов, касающихся слияния изменений из фонового потока в основной поток.

Однако, что мне нужно сделать, это наоборот. Мне как-то нужно убедиться, что вновь порожденный фоновый поток получает данные, которые были недавно созданы в moc основного потока. Прямо перед порождением нити. По какой-то причине некоторые данные, добавленные в документ основного потока, даже после сохранения, не отображаются в moc нового потока. Я определенно что-то упускаю, порождая нить и ее moc.

Кстати: у меня есть moc для каждого потока и общий постоянный координатор хранилища.

Вот код, который устанавливает moc для потока:

-(NSManagedObjectContext *) storageContext

NSThread *currentThread = [NSThread currentThread];
NSManagedObjectContext *context = [currentThread.threadDictionary objectForKey:@"context"];
if(context != nil)
{
    return context;
}

context = [[[NSManagedObjectContext alloc] init] autorelease];
[context setPersistentStoreCoordinator: self.coordinator];

[currentThread.threadDictionary setObject:context forKey:@"context"];

return context;

А вот код, который порождает поток

-(void)startBackgroundSync

AutoSync *target = [AutoSync withInit];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:target selector:@selector(sync) object:nil];   
operation = [operation autorelease];

//Add the operation to the queue
[queue addOperation:operation];

Буду очень признателен в правильном направлении

Спасибо Сохил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...