作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我知道如何使用 NSPredicate 执行类似 SQL SELECT
的操作。我怎样才能执行类似 DELETE WHERE
的操作?我是否必须为每个获取的对象调用 [NSManagedObjectContext deleteObject]
?谢谢
NSError *error;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:TASK_ENTITY inManagedObjectContext:managedObjectContext]];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"label LIKE %@", label];
[request setPredicate:predicate];
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
[managedObjectContext deleteObject:[array objectAtIndex:0]];
最佳答案
我相信遍历返回的数组并调用 [NSManagedObjectContext deleteObject:]
是“正确”/惯用的方法。这可能看起来效率低下,但请记住,fetch 命令实际上并不获取对象的数据,deleteObject:
方法只是标记要删除的对象,当您发送 [ NSManagedObjectContext 保存:]
。不知道 Core Data 的内部结构,我无法告诉你它是否像 DELETE WHERE
查询一样高效(大概 Core Data 在内存中有来自获取的索引主键,并使用它们)但是在根据我分析 Core Data 应用程序的经验,它并不比保存新的或更新的对象慢很多。
关于objective-c - 核心数据 : DELETE WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158423/
我是一名优秀的程序员,十分优秀!