2012-03-16 21 views

Respuesta

5

Lo que está buscando es save en Core Data después de que se hayan insertado los 100 objetos en lugar de después de cada inserción.

Cuando se insertan objetos en Core Data, solo están presentes en la memoria. Para conservar sus nuevos objetos en el disco, debe guardarlos y tomará todos los cambios (inserciones, actualizaciones y eliminaciones) y los escribirá juntos en el disco.


Si nos fijamos en the documentation for -insertObject (abajo) se puede leer que la inserción de un objeto sólo registra el objeto para ser insertado cuando se guardan los cambios.

InsertObject:

Registra un objeto para ser insertado en el almacén persistente del receptor la próxima vez que se guardan los cambios.

- (void)insertObject:(NSManagedObject *)object 

Parámetros

objeto

Un objeto gestionado.

Por más mirando the documentation for -save: (abajo) se va que va (intento de) salvar a todos los no guardados, en su caso, todos los 100 elementos insertados cambiado.

Guardar:

los intentos de cometer cambios sin guardar objetos registrados a su almacén persistente.

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

Parámetros

error

Un puntero a un objeto NSError. No necesita crear un objeto NSError. La operación de guardar aborta después de la primera falla si pasa NULL.

Valor de retorno

YES si la salvación tiene éxito, de lo contrario NO.

+0

Esto también es muy lento porque se pierde el aumento de velocidad de las transacciones. De todos modos para enmendar eso? – Jonny

3
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping]; 
... do some data modifications .... 
[[<#NSManagedObjectContext#> undoManager] endUndoGrouping]; 

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