objective-c – NSTable和NSMutableArray排序

我有一个NSTableView,我试图排序.数据源是NSMutableArray,其中包含自定义类的实例.

-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors

我正在使用上面的内容,以便我可以跟踪用户何时按下表格的标题.我使用以下方法进行排序:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"make" ascending:bool_asc_desc] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [ads_printers_array sortedArrayUsingDescriptors:sortDescriptors];

我想知道的是如何传递被按下的表格栏?这将允许我更改initWithKey:@“make”(使用if语句),以便我可以根据单击的标题进行排序.

谢谢.

附:我尝试过以下方法:

if ([ads_rdp_driver_table selectedColumn] == tc_make)

ads_rdp_driver_table是我的NSTableView,tc_make是我定义的NSTableColumn.但是,我收到此错误:

ISO C禁止指针和整数之间的比较

我想如果我能找出错误,这可行.

解决方法

NSTableView的selectedColumn方法返回所选列的索引(而不是指向它的指针),这就是您收到编译错误的原因.要获得实际的列,请尝试这样的事情(代码我包含错误,我逐字输入):

NSTableColumn * selectedColumn = (NSTableColumn *)[[tableView tableColumns] objectAtIndex: [tableView selectedColumn]];
NSLog(@"Column identifier: %@",[selectedColumn identifier]);

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...