XMLファイルの内容でアウトラインビューを作成しようとしています。NSIndexPathの値を増やす
NSIndexPathの中に値を作成して管理したいのですが、ココアはその文書を解析します。 NSIndexPathインデックスを追加および削除するためのメソッドを持っているが、私は、各インデックスの値をインクリメント/デクリメントする必要があります
[0,0]
[0,1]
[0,2]
など...
どうすればいいですか?
XMLファイルの内容でアウトラインビューを作成しようとしています。NSIndexPathの値を増やす
NSIndexPathの中に値を作成して管理したいのですが、ココアはその文書を解析します。 NSIndexPathインデックスを追加および削除するためのメソッドを持っているが、私は、各インデックスの値をインクリメント/デクリメントする必要があります
[0,0]
[0,1]
[0,2]
など...
どうすればいいですか?
NSIndexPathは変更不可能なので、毎回新しいインデックスパスを作成する必要があります。おそらく最も効率的な方法は、length
,getIndexes:
、およびinitWithIndexes:length:
メッセージと、バッファを拡張/縮小するためのrealloc
関数を使用することです。
はrelease
に古いインデックスバッファにそのインデックスを取得した後とalloc
王の前にパスとinit
ING(WithIndexes:length:
)新しいものを忘れてはいけない、とあなたが完了したら、バッファをfree
します。 (realloc
は古いバッファを解放するので、最後のバッファはfree
にする必要があります)。
私は@LolaRunと一緒です。私たちはココアの赤ちゃんですrealloc。したがって、このような何かしてみてください:
NSIndexPath *someIndexPath = [NSIndexPath indexPathWithIndexes:newIndexes
length:len];
NSUInteger newIndexes2[[someIndexPath length]];
[someIndexPath getIndexes:newIndexes2];
NSUInteger len2 = sizeof(newIndexes2)/sizeof(NSUInteger);
NSIndexPath *baseIndexPath2 = [NSIndexPath indexPathWithIndexes:newIndexes2
length:len2];
NSUInteger ii;
NSInteger start = [someIndexPath indexAtPosition:[someIndexPath length] -1];
for (ii=start; ii<10; ii++) {
NSIndexPath *newIndexPath2 = [baseIndexPath2 indexPathByAddingIndex:ii];
NSLog(@"newIndexPath2 = %@", newIndexPath2);
}
なお:
NSUInteger newIndexes[] = {0,1};
NSUInteger len = sizeof(newIndexes)/sizeof(NSUInteger); //sorry!
NSIndexPath *baseIndexPath = [NSIndexPath indexPathWithIndexes:newIndexes
length:len];
NSUInteger i;
for (i=0; i<10; i++) {
NSIndexPath *newIndexPath = [baseIndexPath indexPathByAddingIndex:i];
NSLog(@"newIndexPath = %@", newIndexPath);
}
をそれとも、既存のindexPathをインクリメントすることもできます(最初の行は、上記の例からnewIndexes配列とindexPathをインスタンス化)最初の例は元のパス0.1の子を作成し、2番目の子は兄弟を作成します。あなたが好きなようにミックスnのマッチ。
他の方法はありませんか?なぜそれが管理できないのであれば、NSIndexPathでそんなにカウントするのですか? – LolaRun
LolaRun:インデックスのC配列を維持できます。次に、必要に応じて配列からNSIndexPathを作成して、配列のインデックスを自由に変更できます。 Cocoa TouchのUITableViewsなど、NSIndexPathsを作成する理由がいくつかあります。 –