У меня есть многопоточное приложение для 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];
Буду очень признателен в правильном направлении
Спасибо
Сохил