ios - CoreData删除多个对象

标签 ios objective-c core-data

我知道如何删除 CoreData 中的单个对象我只是想知道是否有更简单的方法来删除多个对象?

对于单个删除你可以使用

[moc deleteObject:someManagedObject];

但是对于多个对象没有等价物。

目前我正在考虑做...

NSArray *arrayOfManagedObjectsToDelete = //...

for (SomeManagedObjectClass *managedObject in arrayOfManagedObjectsToDelete) {
    [moc deleteObject:managedObject];
}

但我不确定是否有其他方法可以做到这一点?

理想情况下是像...这样的方法

- (void)deleteObjects:(NSSet*)objects

NSManagedObjectContext 或一些类似的方法上。

最佳答案

iOS 9 及更高版本

swift

let fetchRequest = NSFetchRequest(entityName: "EntityName")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

do {
    try myPersistentStoreCoordinator.executeRequest(deleteRequest, withContext: myContext)
} catch let error as NSError {
    // TODO: handle the error 
}

objective-C

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"EntityName"];
NSBatchDeleteRequest *deleteRq = [[NSBatchDeleteRequest alloc] initWithFetchRequest:request];

NSError *deleteError = nil;
[myPersistentStoreCoordinator executeRequest:deleteRq withContext:myContext error:&deleteError];

iOS 8 及更早版本

NSFetchRequest *fr = [[NSFetchRequest alloc] init];
[fr setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:myContext]];
[fr setIncludesPropertyValues:NO]; //only fetch the managedObjectID

NSError *error = nil;
NSArray *objects = [myContext executeFetchRequest:fr error:&error];

//error handling goes here
for (NSManagedObject *object in objects) {
  [myContext deleteObject:object];
}
NSError *saveError = nil;
[myContext save:&saveError];
//more error handling here

关于ios - CoreData删除多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560900/

相关文章:

ios - Xcode 调试内存图不显示对象/边缘名称

objective-c - 在 View Controller 中维护 subview 的链接

swift - 如何与Widget共享核心数据?

iphone - 更改数据模型后保存在设备上时崩溃

ios - 程序收到信号 : “EXC_BAD_ACCESS” with Core Data

ios - PushViewController 在解雇 ViewController 后不会推送

ios - Swift 3 精确定时器重复(iOS 9)

iphone - 在 iPad 中,当从弹出窗口内的另一个 View 导航回来时,表格 View 会显示更多记录

ios - 在 UIView 上绘制一条 5 像素的线

ios - How to indent documentation in appledoc/HeaderDoc(关于带参数的 block 的文档)