NSTable和NSMutableArray排序

时间:2012-05-30 11:09:08

标签: objective-c cocoa sorting nsmutablearray nssortdescriptor

我有一个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语句),以便我可以根据单击的标题进行排序。

感谢。

P.S。我尝试过以下方法:

if ([ads_rdp_driver_table selectedColumn] == tc_make)

ads_rdp_driver_table是我的NSTableView,而tc_make是我定义的NSTableColumn。但是,我收到了这个错误:

ISO C ++禁止在指针和整数

之间进行比较

我想如果我能找出错误,这可能会有用。

1 个答案:

答案 0 :(得分:3)

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

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