无论删除规则如何,都无法删除核心数据实体

Posted

技术标签:

【中文标题】无论删除规则如何,都无法删除核心数据实体【英文标题】:Can not delete Core Data Entity regardless of Delete Rule 【发布时间】:2012-06-07 21:01:54 【问题描述】:

我正在尝试删除一个核心数据实体,无论我使用什么删除规则,它都不起作用。它根本不做任何事情。

我正在使用 Firefox 的 Sqlite Add-on 浏览核心数据数据库,删除代码运行后我可以看到那里的所有行。

我的删除代码是这样的

+(void)deleteCustomerWithID:(int)customerid inManagedObjectContext:(NSManagedObjectContext  *)context

Customer *customer = nil;

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Customer"];
request.predicate = [NSPredicate predicateWithFormat:@"id = %d", customerid];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"organization" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

NSError *error = nil;
NSArray *customers = [context executeFetchRequest:request error:&error];

if (!customers || ([customers count] > 1)) 
    // handle error
 else if (![customers count]) 
    // customer not found
 else 
    customer = [customers lastObject];
    [context deleteObject:customer];

    NSError *error; 
    if(![context save:&error])
        NSLog(@"Unresolved error series %@, %@", error, [error userInfo]);
    


任何想法我做错了什么?

【问题讨论】:

它是否有可能通过其他 if/else 分支之一? Customer 是否与定义的“拒绝”删除规则有任何关系? (我看到你说“不管删除规则是什么”,但你检查过所有关系吗?) 没有任何实体的拒绝规则.. 您是否 100% 确定带有 deleteObject: 方法调用的 if 分支已执行并且没有保存错误?当您手动删除对象时,删除规则不应在这里发挥任何作用。 是的 100% 确定 - 我通过断点进行了检查 【参考方案1】:

我不确定出了什么问题,但我最终删除了实体中的所有关系,然后重新创建它们。这似乎解决了这个问题。我现在可以成功级联删除。

【讨论】:

以上是关于无论删除规则如何,都无法删除核心数据实体的主要内容,如果未能解决你的问题,请参考以下文章

SWIFT 的核心数据:如何从关系实体中删除对象?

核心数据实体未删除

使用核心数据,当一对多关系低于最小计数时,是一种自动删除实体的方法吗?

NSFetchedResultsController 无法识别删除

实体框架核心 - 无法删除可选的可为空关系

iphone核心数据:无法删除具有一对多关系的数据