gpt4 book ai didi

ios - 如何使用 NSPredicate 从 CoreData 中删除选定数量的行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:11 24 4
gpt4 key购买 nike

我想从 CoreData 表中删除选定的项目列表:一些具有特定 namesToDelete 的人:

NSError*        error        = nil;
NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person"
inManagedObjectContext:managedObjectContext]];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"NOT (name IN %@)", namesToDelete];
[request setPredicate:predicate];
NSArray* deleteArray = [managedObjectContext executeFetchRequest:request error:&error];
if (error == nil)
{
for (NSManagedObject* object in deleteArray)
{
[managedObjectContext deleteObject:object];
}

[managedObjectContext save:&error];
//### Error handling.
}
else
{
//### Error handling.
}

这可行,但这是在 CoreData 中执行此操作的最简单/最短的方法吗?

最佳答案

关于最好的修剪是这样的:

NSError*        error        = nil;
NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
[request setPredicate:[NSPredicate predicateWithFormat:@"NOT (name IN %@)", namesToDelete]];
NSArray* deleteArray = [managedObjectContext executeFetchRequest:request error:&error];

if (deleteArray != nil)
{
for (NSManagedObject* object in deleteArray)
{
[managedObjectContext deleteObject:object];
}

[managedObjectContext save:&error];
//### Error handling.
}
else
{
//### Error handling.
}

另请注意,您检查数组是否作为成功标准返回,而不是检查 nil 中的错误。同样,对于 save:,您应该检查返回的 BOOL

关于ios - 如何使用 NSPredicate 从 CoreData 中删除选定数量的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580549/

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