ios核心数据如何实现sql事务功能?

Leo*_*ang 7 xcode core-data objective-c ios

喜欢标题.我使用核心数据插入项目,我插入100个项目,它太慢了.如何提高插入速度?核心数据是否具有交易功能?

小智 6

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

[[<#NSManagedObjectContext#> undoManager] undo]; // rollback
...
Run Code Online (Sandbox Code Playgroud)


Dav*_*ist 5

save在插入所有100个对象之后,而不是在每个插入之后,您要查找的是Core Data.

将对象插入Core Data时,它们仅存在于内存中.要将新对象保存到光盘,您应该保存哪些将进行所有更改(插入,更新和删除)并将它们一起写入光盘.


如果查看-insertObject(下面)的文档,您可以看到插入对象时只注册保存更改时要插入的对象.

insertObject:

在下次保存更改时,注册要插入接收方持久存储中的对象.

- (void)insertObject:(NSManagedObject *)object
Run Code Online (Sandbox Code Playgroud)

参数

宾语

一个托管对象.

通过进一步查看-save :(下面)的文档,您将看到它将(尝试)保存所有未保存的已更改,在您的情况下,所有100个插入的项目.

保存:

尝试将未注册的更改提交到其持久存储的已注册对象.

- (BOOL)save:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

参数

错误

指向NSError对象的指针.您不需要创建NSError对象.如果通过,保存操作将在第一次失败后中止NULL.

回报价值

YES如果保存成功,否则NO.