NSPrivateQueueConcurrencyType Não está salvando corretamente

O método a seguir é chamado para preencher meus Core-Data depois que o AFNetworking busca informações do meu servidor de aplicativos.

As informações parecem estar funcionando perfeitamente, pois quando a tabela é atualizada, posso ver as novas informações sendo atualizadas no UITableView .

Agora, o problema que tenho é que mesmo eu posso ver as informações (depois de ter sido obtido a partir do servidor, armazenados em dados-core e refetches para exibir no meu UITableView ) Se eu, em seguida, ir e fechar meu aplicativo e ab aberto , a informação não está mais lá.

Parece que a informação não é persistente e o problema parece ser o tópico. dado que se eu remover a opção de thread no meu método tudo funciona bem.

O que estou perdendo?? Eu tentei a maioria das coisas que me deparei, mas não consigo encontrar uma solução.

 NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; childContext.parentContext = managedObjectContext; myModel.context = childContext; [childContext performBlock:^{ // ... Lots Controller logic code that then calls the class myModel where all my Core-Data save methods are // Sort Wall Pictures if ( [dataHolder[@"verb"] isEqualToString:@"addWallPicture"] ) { data = @{ @"resourceID":dataHolder[@"_id"][@"$id"], @"resourceName":dataHolder[@"details"][@"resourceName"], @"author":@{ @"id":dataHolder[@"userId"][@"$id"], @"username":dataHolder[@"details"][@"authorName"] }, @"likesNumber":@0, @"likesPeople":@[] }; [myModel saveSocialWall:data date:date verb:dataHolder[@"verb"] code:dataHolder[@"_id"][@"$id"] myUser:myUser]; continue; } [childContext save:&error]; }]; 

Você tem que salvar o contexto principal também em algum momento, por exemplo, depois de salvar o contexto filho.

Salvar o contexto filho salva apenas no contexto principal e salvar o contexto principal salva no arquivo de armazenamento.

Assim (escrito no telefone, haverá erros de syntax):

 // ... [childContext save:&error]; [mainContext performBlock:^{ [mainContext save:&error]; }]; 

No Swift 2.0, isso seria:

 do { try childContext.save() mainContext.performBlock { do { try mainContext.save() } catch let err as NSError { print("Could not save main context: \(err.localizedDescription)") } } } catch let err as NSError { print("Could not save private context: \(err.localizedDescription)") }