我有一個可能愚蠢的問題關於一個潛在的愚蠢的數據庫設計。遞歸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