/ / ios core data como implementar a função de transação sql? - objetivo-c, ios, xcode, core-data

ios core data como implementar a função de transação sql? - objetivo-c, ios, xcode, core-data

como título. Eu uso os dados do núcleo para inserir itens, insiro 100 itens, é muito lento. Como aumentar a velocidade da pastilha? Dados principais: qual tem a função de transação?

Respostas:

5 para resposta № 1

O que você está procurando é save no Core Data após a inserção de todos os 100 objetos, em vez de após cada inserção.

Quando objetos são inseridos nos Dados Principais, eles sãopresente apenas na memória. Para manter seus novos objetos em disco, você deve salvar o que fará todas as alterações (inserções, atualizações e exclusões) e gravá-las no disco.


Se você olhar a documentação para -insertObject (abaixo), você pode ler que a inserção de um objeto só registra o objeto para ser inserido quando as alterações são salvas.

Registra um objeto a ser inserido no armazenamento persistente do receptor na próxima vez que as alterações forem salvas.

- (void)insertObject:(NSManagedObject *)object

Parâmetros

objeto

Um objeto gerenciado.

Ao olhar mais a documentação para -save: (abaixo) você verá que (tentará) salvar todos o não salvo foi alterado, no seu caso, todos os 100 itens inseridos.

Salve :

Tentativas de confirmar alterações não salvas nos objetos registrados no armazenamento persistente.

- (BOOL)save:(NSError **)error

Parâmetros

erro

Um ponteiro para um NSError objeto. Você não precisa criar um NSError objeto. A operação de salvamento é interrompida após a primeira falha se você passar NULL.

Valor de retorno

YES se o salvamento for bem-sucedido, caso contrário NO.


4 para resposta № 2
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping];
... do some data modifications ....
[[<#NSManagedObjectContext#> undoManager] endUndoGrouping];

[[<#NSManagedObjectContext#> undoManager] undo]; // rollback
...