另外,我在Core Data文档中看到,在某些情况下,可选标志很重要。但是,不清楚他们的关系与我的情况有关。他们在谈论一个遏制情况(B由A拥有),而我的情况是订阅/关联(B与A相关)。
我可以简单地管理代码中的删除程序设计,但是如果可能的话,可以让Core Data做正确的事情。但是,我们不清楚Core Data中是否支持垃圾收集语义。
有什么建议么?
解决方法 我的目标与你显然相同(删除B,最后一次被删除)。花更长的时间才能得到这个权利。特别是因为>当A准备删除时,B中的to-many关系可能尚未更新,因此您不能仅仅计算B中引用的A。
> isDeleted on A似乎已经在-prepareForDeletion中设置了
如果有人有兴趣,这可以帮助我(我会使用部门< - >> 员工,因为它更容易阅读):
员工人数:
- (voID)prepareForDeletion { // Delete our department if we we're the last employee associated with it. Department *department = self.department; if (department && (department.isDeleted == NO)) { nspredicate *predicate = [nspredicate predicateWithFormat:@"isDeleted == NO"]; NSSet *employees = [department.employees filteredSetUsingPredicate:predicate]; if ([employees count] == 0) { [self.managedobjectContext deleteObject:department]; } }}
其他人也建议把这个逻辑放在部门里。我更喜欢上面的解决方案,因为在某些情况下(例如在手工商店迁移或数据导入期间),我实际上可能希望保存一个空的部门。
总结以上是内存溢出为你收集整理的iPhone核心数据:跨越多对一关系的级联删除全部内容,希望文章能够帮你解决iPhone核心数据:跨越多对一关系的级联删除所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)