我正在创建一个具有主从界面的应用程序,类似于 iTunes。它与 iTunes 的播放列表具有相同的数据层次结构(除了我不允许“播放列表”组保持简单)。换句话说,有正常的播放列表,其中唯一的项目是由用户手动添加的。有智能播放列表,显示与用户定义的谓词匹配的所有项目。最后,有一些用户根本无法编辑的“播放列表”(我称之为这些DefaultFolders
),但本质上只不过是花哨的智能播放列表,因为它们的谓词是显示所有内容。这些就像 iTunes 中的“图书馆”和“电影”部分。
在我尝试重新创建此结构时,我提出了以下层次结构(在核心数据中): 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
实体的关系一致。但是,我无法在 中实现items
访问器AbstractFolder
,因为这会覆盖 Core Data 为Folder
实体提供的生成的访问器。我曾考虑将其作为所有具体文件夹都将实现的协议的一部分,但这似乎违背了继承的目的。
所以我向邮件列表的集体智慧敞开心扉。有没有更好的方法可以为这种结构建模?你们有没有人开发过具有类似结构的应用程序?你觉得什么有帮助?