假设我有Project和Path。Project有许多路径(可选)。Paths可以属于许多项目(非可选的,min=1)。当我归档与Path关联的最后一个Path时,Path也应该被归档。但是,当Path属于另一个活动项目时,不应该对其进行归档。
"Archival“等于设置archivedDate属性。
我天真的做法是:持久性堆栈订阅核心数据通知(但不确定是哪个),在保存时检查受影响的Path对象,并强制执行归档规则。
你会做什么来实现“级联”档案?
发布于 2014-11-13 17:45:08
我认为您可以简单地在您的setArchivedDate类中重写Project。在那里,您可以检查所有路径的状态并相应地存档,如下所示
-(void)setArchivedDate:(NSDate*)newValue {
[self willChangeValueForKey:@"archivedDate"];
[self setPrimitiveValue:newValue forKey:"archivedDate"];
[self didChangeValueForKey:@"archivedDate"];
for (Path *path in self.paths) {
NSSet *activeProjects = [path.projects filteredSetUsingPredicate:
[NSPredicate predicateWithFormat:@"archivedDate = nil"]];
if (!activeProjects.count) {
path.archivedDate = newValue;
}
}
}PS:如果您正在使用Swift,这是用didSet完成的。
https://stackoverflow.com/questions/26911223
复制相似问题