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 № 1O 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 umNSError
objeto. A operação de salvamento é interrompida após a primeira falha se você passarNULL
.Valor de retorno
YES
se o salvamento for bem-sucedido, caso contrárioNO
.
4 para resposta № 2
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping];
... do some data modifications ....
[[<#NSManagedObjectContext#> undoManager] endUndoGrouping];
[[<#NSManagedObjectContext#> undoManager] undo]; // rollback
...