6

我希望对 Core 数据执行一些简单的删除操作,但请对此提供一些建议。

我有一个包含事务、名称、事件和日期实体的模型。交易具有到其他每个实体的链接。

在应用程序中,当用户将信息添加到文本字段时,这些信息会保存到 4 选项卡表视图控制器中。

第一个选项卡在事务实体上使用 NSFetchedResultController 和 fetchRequest。第二个选项卡使用名称实体,第三个使用事件,第四个使用日期实体。

如果我从“事务”选项卡中删除一个条目,它只会删除该有意义的事务。

我想要的是能够从名称选项卡中删除一个人,或者从事件选项卡中删除一个事件,并通过应用程序的模型进行级联。因此,如果 Bob 有多个交易,删除他的交易选项卡将删除该交易。

如果我从名称选项卡中删除 BOB,它应该从他参与每个日期和交易的每个事件中删除他。

这同样适用于事件和日期。

编辑:更新以包括数据模型

注意:Year 实体是实验性的,目前未使用 在此处输入图像描述 我将如何做这样的事情?

谢谢

4

2 回答 2

8

如果您将“交易”关系从“到”设置为“级联”的“删除规则” PersonTransaction那么删除一个人将自动删除所有相关交易。

于 2013-12-11T20:02:27.807 回答
0

首先,我看不出将日期抽象为实体的智慧。也许你能启发我。在我看来,日期属于交易。在日期选项卡上,您仍然需要获取交易,但会以不同的方式分组和排序。

我想你知道如何让你的人到交易关系级联。这将删除与一个人相关的所有交易。这同样适用于事件。

然而,向另一个方向级联则问题更大。您必须以某种方式检查它是否是一对多关系的最后一个成员,如果是,则仅将其删除。一种方法是覆盖设置器。在您生成的 NSManagedObject 子类中,您将找到自动生成的设置器,包括用于从集合中添加或删除对象的设置器(即多对多关系)。

-(void)removeTransactionsObject:(Transaction *)value {
    [super removeTransactionsObject:value];
    if (!self.transactions.count) {
       [self.managedObjectContext deleteObject:self];
    }
}
于 2013-12-11T20:10:29.850 回答