objective-c - 使用底层 SQLite 数据库时 [NSManagedObjectContext save] 是原子提交吗?

标签 objective-c ios macos sqlite core-data

或者可能是 Core Data 将保存操作拆分为几个连续的原子步骤?对于我的工作,我必须确保在崩溃后重新访问数据库时,要么所有内容都已保存,要么回滚到保存操作之前的状态。我一定不会遇到这样的情况,即一些修改后的 NSObject 被保存,而另一些则没有。

注意:我正在使用以下 SQLite pragma 选项(我是否需要其他任何选项来确保原子性?):

[pragmaOptions setObject:@"FULL" forKey:@"synchronous"];
[pragmaOptions setObject:@"1" forKey:@"fullfsync"];
[pragmaOptions setObject:@"WAL" forKey:@"journal_mode"];

最佳答案

是的,Core Data 的-save 是事务性的。要么一切都被保存,要么什么都没有。无论您使用哪家商店,都是如此。

关于objective-c - 使用底层 SQLite 数据库时 [NSManagedObjectContext save] 是原子提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12785470/

相关文章:

ios - 使用 AFXAuthClient 时,如何保留 token 并发出进一步的请求?

ios - @3x 图像在 XIB 中的 iPhone 6 或 5S 或 5 上错误地使用了 "Use as Launch Image"选项集

ios - 构建 iOS 框架时找不到 Ktor 和 kotlinx 依赖项

macos - 触控板手势切换到标题/源

objective-c - MPMoviePlayerController - 持续时间始终为 0

ios - 在 Objective-C 中如何检测 iPhone 和 iPad 何时插入?

ios - 显示键盘时 WKWebView 出现约束问题

ios - 如何根据 UIImage 大小调整 UIImageView 的大小并适合屏幕的宽度

xcode - 使用另一个应用程序打开一个应用程序

macos - Homebrew:通过类似于 pip 的 requirements.txt 的配置文件安装?