对支持NSTableView的NSArrayController进行排序

dav*_*vid 14 sorting cocoa nstableview nsarraycontroller

我有一个NSArrayController和一个NSTableView.他们从iTunes中显示曲目.我可以通过单击标题对列表进行排序.

有没有办法为表视图设置默认排序描述符,以便每次用户启动应用程序时对相册进行排序?

我试图在数组控制器和表视图上设置sortDescriptor,但这没有任何改变.

谢谢

编辑:答案是对的.但它需要一个NSArray:

- (NSArray *)mainSortDescriptor {

    return [NSArray arrayWithObjects:
            [NSSortDescriptor sortDescriptorWithKey:@"album" ascending:YES], 
            [NSSortDescriptor sortDescriptorWithKey:@"trackNumber" ascending:YES], 
            nil];
Run Code Online (Sandbox Code Playgroud)

}

Jos*_*ell 13

如果要绑定数组控制器的排序描述符,则必须将其绑定某些内容.您可以将它放在应用程序委托中,例如:

- (NSArray *)tracksSortDescriptors {
    return [NSArray arrayWithObject:
             [NSSortDescriptor sortDescriptorWithKey:@"albumName"
                                           ascending:YES]];
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在IB中设置绑定

Bind to: MyAppDelegate  
Model Key Path: tracksSortDescriptors

编辑.我忘记了,当从PyObjC翻译时,我正在返回一个列表.哎呀.


Ada*_*dam 5

我尝试了这个,并没有完全奏效 - 在每个应用程序启动时使用,但在应用程序运行时没有.

最后,我注意到在我的NSArrayController对象中,以下框未被攻击(argh!):

"自动重新排列内容"

...所以,对于遇到同样问题的人来说是这样的:确保盒子打开:)