2012-06-07 72 views
0

我试图删除核心数据实体,无论我使用的删除规则如何,它都不起作用。它什么都不做。无论删除规则如何,都无法删除核心数据实体

我使用的是Firefox的Sqlite插件来浏览核心数据库,在删除代码运行后我可以看到所有的行。

我删除代码如下所示

+(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]); 
    } 
} 
} 

任何想法,我究竟做错了什么?

+0

有没有机会通过其他if/else分支之一? “客户”与定义的“拒绝”删除规则有任何关系吗? (我看到你说“不管什么删除规则”,但你检查了所有的关系?) –

+0

没有拒绝任何实体的规则.. –

+0

你是否100%确定如果带有'deleteObject:'方法调用的分支被执行并且没有保存错误?在手动删除对象时,删除规则不应该在这里扮演任何角色。 –

回答

0

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