値をNSTableView
追加する必要があります。でやろうと思っていたのNSArrayController
ですが、テーブルの近くに「上へ移動」「上へ移動」「下へ移動」「下へ移動」の 4 つのボタンがあります。これらのボタンを使用して、テーブル内のエントリを並べ替えることができなければなりません。
私が考えることができる唯一のことは、辞書の最初のエントリが表示される値であり、辞書の2番目のエントリが配列のソートに使用されるdoubleである辞書の配列を使用することです。値を上下に移動する場合は、移動先の前後のエントリの並べ替え値を合計してから、2 で割ります。
私が考えていた解決策が適切かどうか確信が持てません。このシナリオへの最善のアプローチは何でしょうか?
- - - 編集 - - -
それに取り組んでいますが、更新された「注文」値を配列コントローラーに書き込むのに苦労しています。その上、値が更新されると、実際に「順序」列でテーブルをソートするのに問題があります。これが私のコードです:
-(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
I can't figure out whats wrong. で失敗しています。