2

ドラッグ アンド ドロップでテーブルを並べ替えるときの典型的なコード スニペットを次に示します。

- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];
    [pboard declareTypes:[NSArray arrayWithObject:MyDataType] owner:self];
    [pboard setData:data forType:MyDataType];
    sourceIndex = [rowIndexes firstIndex];
    return YES;
}

ラインを見てください

 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];

どのようにしてrowIndexesをルートオブジェクトにすることができますか?

ドキュメントによると、NSIndexSet クラスは一意の符号なし整数の不変のコレクションを表します..コードでインデックス セットを使用して、インデックスを他のデータ構造に格納します。たとえば、NSArray オブジェクトが与えられた場合、インデックス セットを使用して、その配列内のオブジェクトのサブセットを識別できます。

NSIndexSet は単なる「一意の符号なし整数の不変コレクション」ではなく、オブジェクトを識別する一連のポインターでもあるようです。非常に紛らわしいのですが、何が起こっているのか説明できる人はいますか?

4

0 に答える 0