gpt4 book ai didi

objective-c - 类似 iTunes 的播放列表结构的最佳实现?

转载 作者:行者123 更新时间:2023-12-03 17:27:08 25 4
gpt4 key购买 nike

我正在创建一个具有主从界面的应用程序,类似于 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 的访问器,以便所有具体文件夹类型(DefaultFolderSmartFolderFolder)可以轻松检索其内容。这与Folder 实体与Item 实体的关系一致。但是,我无法在 AbstractFolder 中实现 items 访问器,因为这会覆盖 Core Data 为 Folder 实体提供的生成的访问器。我曾考虑过将其作为所有具体文件夹都将实现的协议(protocol)的一部分,但这似乎违背了继承的目的。

因此,我将其开放给邮件列表的集体智慧。有没有更好的方法可以对这个结构进行建模?你们中有人开发过具有类似结构的应用程序吗?您觉得什么有帮助?

最佳答案

抱歉,我没有太多使用 Core Data,但我不清楚为什么需要在 AbstractFolder 中实现项目访问器?难道你不能把它放在标题的一个类别中而不费心去实现它吗?这是抽象方法的标准方法。

例如,在 AbstractFolder.h 中,您将具有:

@interface AbstractFolder (Abstract)

NSSet *items;

@end

然后你就不必费心在任何地方实现它——这将强制使用子类实现。

关于objective-c - 类似 iTunes 的播放列表结构的最佳实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com