gpt4 book ai didi

objective-c - 核心数据 : DELETE WHERE

转载 作者:IT王子 更新时间:2023-10-29 08:09:34 25 4
gpt4 key购买 nike

我知道如何使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com