6

我的应用程序中有一个 iTunes 风格的界面:左侧的源列表 (NSOutlineView) 包含不同的库和播放列表,界面右侧的 NSTableView 显示“演示文稿”的信息。与 iTunes 类似,无论选择库还是播放列表(标题、作者、创建日期等),我都会在表格视图中显示相同类型的信息。

替代文字

我目前有一个 NSArrayController 连接到我的 NSTableView 并根据源列表中选择的内容设置获取谓词。这在选择库时可以正常工作,因为我可以将获取谓词设置为按我的Presentation Core Data 实体中的“类型”字段进行过滤。但是,当我尝试调整播放列表的提取谓词时,似乎没有任何方法可以设置提取谓词,因为我在播放列表和演示文稿之间有一个表格来跟上播放列表中的顺序。根据 Apple 文档,这些类型的谓词不适用于 Core Data(它基本上没有多个内连接)。以下是我的数据模型的相关部分。

替代文字

我的数据模型设置不正确吗?我应该放弃 NSArrayController 并手动处理连接 NSTableView 吗?我试图弄清楚是否有一个简单的修复,或者真的是一个设计缺陷。

4

1 回答 1

0

在 CoreData 中有一个用于创建关系的文档

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html
http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData /Articles/cdBindings.html

但是,从您的数据库模型来看,您正在使用三个表正确地做到这一点:

Presentation包含有关歌曲的信息 PlaylistItemone-to-onePresentation Playlistone-to-many关系 与 PlaylistItem的关系

演示[ID TITLE URL ALBUM ARTIST ....]
播放列表项目播放[ID Presentation_ID Playlist_ID]
列表 [ID Title MoreInfo]

所以用 IB CoreData 实现的语言:

  • 首先将每个播放列表提取到左列中的 NSOutlineView
  • 在选择时,获取 Playlist ID 并根据 Playlist_ID 过滤获取所有 PlaylistItem
  • PlaylistItem 内部将有 Presentation 对象以访问相关歌曲信息

是的,如果我是你,我会更愿意手动连接 nstableview

于 2011-08-18T08:43:13.933 回答