【发布时间】:2009-11-08 04:56:37
【问题描述】:
我正在创建一个具有主从界面的应用程序,类似于 iTunes。它与 iTunes 的播放列表具有相同的数据层次结构(除了我不允许“播放列表”组保持简单)。换句话说,有正常的播放列表,其中唯一的项目是由用户手动添加的。有智能播放列表,显示与用户定义的谓词匹配的所有项目。最后,还有一些用户根本无法编辑的“播放列表”(我称之为DefaultFolders),但本质上只不过是花哨的智能播放列表,因为它们的谓词是显示所有内容。这些类似于 iTunes 中的“图书馆”和“电影”部分。
在我尝试重新创建此结构时,我提出了以下层次结构(在 Core Data 中):http://gallery.me.com/davedelong#100084/Screen%20shot%202009-11-07%20at%207.17.53%20PM&bgcolor=black(希望它是不言自明的)
但是,随着我对这个应用程序的深入了解,这个结构变得有点麻烦。例如,我在 AbstractFolder 类上定义了一个名为 -(NSSet *)items 的访问器,这样所有具体的文件夹类型(DefaultFolder、SmartFolder 和 Folder)都可以轻松检索它们的内容。这与文件夹实体与Item 实体的关系一致。但是,我无法在AbstractFolder 中实现items 访问器,因为这会覆盖Core Data 为Folder 实体提供的生成访问器。我曾考虑将其作为所有具体文件夹都将实现的协议的一部分,但这似乎违背了继承的目的。
所以我向邮件列表的集体智慧敞开心扉。有没有更好的方法可以为这种结构建模?你们有没有人开发过具有类似结构的应用程序?你觉得什么有帮助?
【问题讨论】:
标签: objective-c cocoa core-data itunes