我有一个NSTableView
,需要添加值。我本来想用来做的NSArrayController
,但是在我的桌子旁边有四个按钮:移至顶部,向上移,向下移,移至底部。我必须能够使用这些按钮对表中的条目进行重新排序。
我唯一想到的是使用字典数组,其中字典的第一项是显示的值,字典的第二项是用于对数组进行排序的双精度型。如果我向上或向下移动一个值,则在目标求和前后将条目的排序值求和,然后除以二。
我不确定我正在考虑的解决方案是否合适。在这种情况下最好的方法是什么?
- - - 编辑 - - -
正在处理它,现在我很难将更新的“ order”值写入arraycontroller。除此之外,一旦值被更新,我实际上很难用“ order”列对表进行排序。这是我的代码:
-(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:]: unrecognized selector sent to instance 0x100450520
我无法弄清楚出了什么问题。
keywordcontroller.arrangedObjects返回(NSArray *),这是不可变的,并且NSArray不包含选择器“ replaceObjectAtIndex:withObject:”。因此,异常/错误“无法识别的选择器”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句