objective-c - 有没有办法使用 NSPredicate 来发出 NSDeleteRequest 与 Core Data 中的 NSFetchRequest ?

标签 objective-c cocoa sqlite core-data

我认为 NSDeleteRequest 类不存在,但我希望它存在。

我可以创建一个 NSPredicate 并使用 NSFetchRequest 来发出:

从 foo 中选择 *,其中 x=y

我如何发出:

从 foo 中删除 x=y

删除 1000 行的唯一方法似乎是获取它们,循环遍历它们,并在每个 NSManagedObject 上调用删除。是对的吗?为什么我不能只发出 1 个删除 sql 语句?

最佳答案

您必须获取托管对象,然后将 -deleteObject: 发送到要删除的每个对象的上下文。

必须将对象提取到内存中,以便 Core Data 能够遵守关系上指定的级联或无效规则。

如果您在删除时遇到特定的性能问题(超出所需的提取),那么在 Instruments 中分析操作会很有帮助。如果您在应用级联/无效规则时单独触发错误,则预取相关对象将提高性能。

关于objective-c - 有没有办法使用 NSPredicate 来发出 NSDeleteRequest 与 Core Data 中的 NSFetchRequest ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263402/

相关文章:

iphone - UITableView 为 Storyboard 中的折叠/展开单元格定制

iphone - 在 iOS 中使用 3 个选项进行切换

java - Android 中的垂直 ScrollView 和 ListView

android - 在 Xamarin 中使用本地数据库

iphone - 将 Sqlite 数据库与 iCloud 同步?

objective-c - OSX 上自动更新应用程序的常见更新程序?

ios - kABPersonLastName 不工作

cocoa - 使用缓动动画调整 NSWindows 大小

ios - 如何在Keychain中找到用SecItemAdd添加的证书

objective-c - 如何在分层 View 顶部的 Objective C 中显示动画 GIF?