cocoa - 以一种让我可以随意重新排序的方式向 NSTableview 添加值

标签 cocoa nstableview multiple-entries

我有一个 NSTableView 并且需要添加值。我正在考虑使用 NSArrayController 来完成此操作,但在我的 table 附近有四个按钮:移至顶部、上移、下移、移至底部。我必须能够使用这些按钮对表中的条目重新排序。

我唯一能想到的是使用字典数组,其中字典的第一个条目是显示的值,字典的第二个条目是用于对数组进行排序的 double 值。如果我向上或向下移动一个值,我会将目标之前和之后的条目的排序值相加,然后除以二。

我不确定我正在考虑的解决方案是否合适。对于这种情况,最好的方法是什么?

------编辑-----

正在处理它,现在我很难将更新的“顺序”值写入数组 Controller 。除此之外,一旦值被更新,我在使用“顺序”列对表进行实际排序时遇到麻烦。这是我的代码:

-(IBAction)singleMoveKeywordUp:(id)sender
{
NSInteger selectedRow = [singleKeywordTable selectedRow];
double firstnum;
double secondnum;
double newnum;

NSMutableDictionary *kwmutabledict = [[NSMutableDictionary alloc] init];

if (selectedRow < 2)
{
    firstnum = 0;
    kwmutabledict = [keywordscontroller.arrangedObjects objectAtIndex:0];
    secondnum = [[kwmutabledict valueForKey:@"order"] doubleValue];
}
  else
{

    kwmutabledict = [keywordscontroller.arrangedObjects objectAtIndex:selectedRow-2];
    firstnum = [[kwmutabledict valueForKey:@"order"] doubleValue];
    kwmutabledict = [keywordscontroller.arrangedObjects objectAtIndex:selectedRow-1];
    secondnum = [[kwmutabledict valueForKey:@"order"] doubleValue];

}


NSMutableDictionary *newkwmutabledict = [[NSMutableDictionary alloc] init];
newnum = (firstnum + secondnum)/2;



[newkwmutabledict setObject:[NSString stringWithFormat:@"%@",[kwmutabledict valueForKey:@"keyword"]] forKey: @"keyword"];
[newkwmutabledict setObject:[NSString stringWithFormat:@"%f",newnum] forKey: @"order"];

[keywordscontroller.arrangedObjects replaceObjectAtIndex:selectedRow withObject:newkwmutabledict] ; //<--------

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES];

[singleKeywordTable setSortDescriptors:[NSArray arrayWithObject:sort]];
}

此操作在标有箭头的行处失败,并显示错误消息 -[_NSControllerArrayProxy ReplaceObjectAtIndex:withObject:]: 无法识别的选择器已发送到实例 0x100450520 我不知道出了什么问题。

最佳答案

keywordscontroller.arrangedObjects 返回不可变的 (NSArray *),并且 NSArray 不包含选择器“replaceObjectAtIndex:withObject:”。因此出现异常/错误“无法识别的选择器”。

关于cocoa - 以一种让我可以随意重新排序的方式向 NSTableview 添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848172/

相关文章:

cocoa - 如何使用 QTKit 设置 QTMedia/QTTrack 的 Alpha 模式

cocoa - 项目全路径

objective-c - 如何从compileAndReturnError 获取错误消息?

php - mysql在表A中查找一系列记录,复制到表B

java - 如何解释 Java Hashmap 中的重复条目?

Objective-C,改变 NSButton 功能?

swift - 如何在 NSTableView 中的行之间添加空格

cocoa - 如何在 NSTableView 中突出显示一行

cocoa - NSTableCellView 中的多个 NSTextField;只有第一个可以直接编辑

mysql - 使用Perl程序在MySQL的列中插入多行