我有一个可能愚蠢的问题关于一个潜在的愚蠢的数据库设计。递归CoreData属性
说我有这样的设计(使用CoreData在iOS项目):
A类
- 名称:NSString的
- 孩子:A类的的NSSet对象
- 父:A类对象
所以这是一个简单的父/子设置。这很好。
现在,我想这样做,以便如果A类对象没有为'name'定义值,则会搜索其父项,直到找到确定'name'的值并返回此值。
这是做一件棘手的事情,因为我的自然反应来覆盖名,吸气这样的:
- (NSString *)name
{
return name =! nil ? name : self.parent.name;
}
但是,这并不工作,因为“名”通过自助进行访问。因为这是一个CoreData实体。
我那时做了一个名为nameRecursive新方法,其工作方式的想法:
- (NSString *)nameRecursive
{
return self.name =! nil ? self.name : self.parent.name;
}
但这种感觉很笨重,不是很优雅(为A类的现实生活版有哪些需要很多属性像这样工作),但我一直没有想到更好的东西。
有没有人有任何想法a)这是否是一个愚蠢的设计或b)我怎么可能以优雅的方式解决它。
任何想法或想法都会很棒。提前致谢。
您可能想重新考虑您的设计,因为它会遮蔽对象。如果你在'name'上进行提取,你将得到所有解析为那个名字的对象。相反,如果您走图寻找名字,您将返回实际上没有名字的第一个对象。我不确定你在找什么逻辑,但你需要注意这些动态属性。 – TechZen 2011-03-22 17:47:08
感谢TechZen。我以惊人的态度接近这一点,因为它打破了很多关于良好数据库设计的想法,但它确实感觉像是适合我的工作。将看到它是如何变得有趣!希望我不后悔! – Mason 2011-03-23 05:02:03