ios核心数据如何实现sql事务function?
像标题一样。 我使用核心数据插入项目,我插入100项,它太慢了。 如何提高插入速度? 具有交易function的核心数据?
你正在寻找的是在所有100个对象被插入之后save
在核心数据中,而不是在每次插入之后。
当对象被插入到核心数据中时,它们只存在于内存中。 要将新对象保存到光盘,应保存将所有更改(插入,更新和删除)并将其写入光盘的光盘。
如果查看-insertObject (下面) 的文档,则可以看到,插入对象时,只会在保存更改时注册要插入的对象。
insertObject:
在下次保存更改时注册要插入接收方持久存储区的对象。
- (void)insertObject:(NSManagedObject *)object
参数
目的
一个托pipe对象。
通过进一步查看文件的保存:(下面),你会认为它会(试图)保存所有未保存的更改,在你的情况下,所有100插入项目。
保存:
尝试将注册对象的未保存更改提交到其持久存储区。
- (BOOL)save:(NSError **)error
参数
错误
指向
NSError
对象的指针。 你不需要创build一个NSError
对象。 如果您传递NULL
,保存操作会在第一次失败后中止。返回值
如果保存成功则返回
YES
,否则返回NO
。
[[<#NSManagedObjectContext#> undoManager] beginUndoGrouping]; ... do some data modifications .... [[<#NSManagedObjectContext#> undoManager] endUndoGrouping]; [[<#NSManagedObjectContext#> undoManager] undo]; // rollback ...