gpt4 book ai didi

cocoa - 如何在 Cocoa 中使用 Bindings+CoreData 实现 iTunes 风格的源列表?

转载 作者:行者123 更新时间:2023-12-03 16:07:35 25 4
gpt4 key购买 nike

为了便于说明,我正在 Cocoa 中编写一个 iTunes 克隆应用程序,该应用程序由 CoreData 支持。为了简单起见,假设有两个“部分”,“库”,其中包含音乐、电影、广播等内容。第二个部分称为“播放列表”,其中保存用户生成的播放列表(只是哑列表,不是智能播放列表) .

因此 SourceList 本身通常会使用 NSOutlineView 实现,这通常很简单。

源列表的库部分并不真正包含用户生成的任何内容,仅包含应用程序的“功能”(本质上),其中播放列表部分仅包含用户创建的自定义列表。如何使用 Bindings 和 CoreData 来做到这一点?是否可以仅将播放列表部分绑定(bind)到用户的数据并以自定义方式显示库功能?

总的来说,我仍然对 Bindings 和 AppKit 不太熟悉,所以请耐心等待。我很感激你的帮助。我应该补充一点,我的目标是 10.6 及以上。

最佳答案

我对核心数据没有太多经验,但我广泛使用了 Cocoa 的绑定(bind)。根据我的经验,这样的方法最适合“手动”调整的中间对象 NSArray

举个例子,我想您将有一个由用户生成的播放列表的自定义 NSArray,并且您还将有一个包含标准库项目的单独的 NSArray 。通过此设置,我将在一个名为 combinedArray 的 Controller 中创建一个属性,该属性将绑定(bind)到您的 NSOutlineView。然后,我会将用户生成的播放列表数组绑定(bind)到 Controller ,并让 Controller 中的一些代码在播放列表数组发生修改时自动更新组合数组。

这是一个快速模型:

TheController.h

@interface TheController : NSObject
{
NSArray * combinedArray;
NSArray * userPlaylists;
}
@property (retain) NSArray * combinedArray;
@property (copy) NSArray * userPlaylists;
@end

TheController.m

@implementation TheController

@synthesize combinedArray;
@synthesize userPlaylists;
- (void)setUserPlaylists:(NSArray *)newLists
{
// standard property setting code:
if (newLists != userPlaylists)
{
[userPlaylists release];
userPlaylists = [newLists copy];
}

// modify the combined array:
NSMutableArray * allItems = [NSMutableArray arrayWithCapacity:0];
[allItems addObjectsFromArray:standardLibrary];
[allItems addObjectsFromArray:userPlaylists];
[self setCombinedArray:allItems];
}

@end

关于cocoa - 如何在 Cocoa 中使用 Bindings+CoreData 实现 iTunes 风格的源列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1676943/

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