我希望使用Core数据执行一些简单的删除,但只需要对此请求一些建议。
我有一个包含交易,名称,事件和日期实体的模型。交易具有指向其他每个实体的链接。
在应用程序中,当用户向文本字段添加信息时,会将其保存到4选项卡表视图控制器中。
第一个选项卡使用NSFetchedResultController和事务实体上的fetchRequest。第二个选项卡使用名称实体,第三个选项卡使用事件,第四个选项卡使用日期实体。
如果我从“交易”选项卡中删除一个条目,它只删除那个有意义的交易。
我想要的是能够从“名称”选项卡中删除某个人,或者从“事件”选项卡中删除一个事件,并将其级联到应用程序的模型中。因此,如果Bob有多个事务,删除他的事务选项卡将删除该一个事务。
如果我从名称标签中删除了BOB,那么它应该从每个日期和交易中与他分开的每个事件中删除他。
同样适用于事件和日期。
编辑:更新以包含数据模型
注意:年份实体是实验性的,目前尚未使用 我该如何做这样的事情?
由于
答案 0 :(得分:8)
如果您为Person
的“交易”关系设置“删除规则”
到Transaction
到“Cascade”,然后删除一个人将自动删除
所有相关交易。
答案 1 :(得分:0)
首先,我看不到将日期抽象为实体的智慧。也许你可以开导我。在我看来,日期属于交易。在日期选项卡上,您仍然需要获取事务,但会对它们进行分组和排序。
我想你知道如何让你的Person-to-Transactions关系级联。这将删除与人关联的所有交易。这同样适用于Event。
然而,在另一个方向上的层叠更成问题。你必须以某种方式检查它是否是多对多关系的 last 成员,如果是,则只删除它。一种方法是覆盖setter。在生成的NSManagedObject子类中,您将找到自动生成的setter,包括用于在集合中添加或删除对象的setter(即多对多关系)。-(void)removeTransactionsObject:(Transaction *)value {
[super removeTransactionsObject:value];
if (!self.transactions.count) {
[self.managedObjectContext deleteObject:self];
}
}