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 ...