1

値を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. で失敗しています。

4

1 に答える 1

2

keywordcontroller.arrangedObjects は (NSArray *) を返しますが、これは可変ではなく、NSArray にはセレクター「replaceObjectAtIndex:withObject:」が含まれていません。したがって、「認識されないセレクター」という例外/エラーが発生します。

于 2014-05-26T05:01:07.230 に答える