като заглавие. Използвам основни данни, за да вмъкна точка, вмъкна 100 артикула, твърде бавно. Как да се увеличи скоростта на вмъкване? Основни данни, които имат функция за транзакции?
Отговори:
5 за отговор № 1Това, което търсите, е да save
в Core Data (Данни на ядрото), след като всички 100 обекта са вмъкнати, а не след всяко вмъкване.
Когато обектите се вмъкват в Core Data, те саприсъства само в паметта. За да запазите новите си обекти на диск, трябва да запишете, което ще вземе всички промени (вмъквания, актуализации и изтриване) и ще ги запишете на диск заедно.
Ако погледнеш документацията за -insertObject (по-долу) можете да прочетете, че вмъкването на обект регистрира само обекта за вмъкване, когато се запазят промените.
Регистрира обект, който да бъде вмъкнат в постоянния магазин на приемника, когато следващите промени бъдат запазени.
- (void)insertObject:(NSManagedObject *)object
Параметри
обект
Управляван обект.
Като продължите да гледате документацията за -save: (по-долу) ще се запишете, че ще се опита да спаси всичко незапазените се променят, в твоя случай всичките 100 поставени елемента.
спестявате:
Опитва да извърши несъхранени промени в регистрираните обекти в техния постоянен магазин.
- (BOOL)save:(NSError **)error
Параметри
грешка
Указател към
NSError
обект. Не е необходимо да създаватеNSError
обект. Операцията за запис се прекратява след първата грешка, ако преминетеNULL
.Стойност на връщането
YES
ако запазването е успешно, в противен случайNO
.
4 за отговор № 2
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping];
... do some data modifications ....
[[<#NSManagedObjectContext#> undoManager] endUndoGrouping];
[[<#NSManagedObjectContext#> undoManager] undo]; // rollback
...