1

NSMutableIndexSetがあり、1ずつインデックスセットを追加して保存できるようにしたいのですが、ブロックを使用してそれを実行することを計画しています。これまでのところ、次のようになっています。

[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
            //add and store back the set here
            idx++;
}];

反復と変更を同時に行う方法はありますか?はいの場合はどうですか?上記のコードは機能していないようです

4

1 に答える 1

4

列挙しているNSMutableIndexSetを列挙および変更することはできません。新しいNSMutableIndexSetを作成し、それにエントリを追加するだけです。パフォーマンスに影響があるかどうかは疑わしいです。

例(ARCを使用):

NSMutableIndexSet *originalIndexSet = [NSMutableIndexSet new];
[originalIndexSet addIndex:1];
[originalIndexSet addIndex:5];

NSMutableIndexSet *newIndexSet = [NSMutableIndexSet new];
[originalIndexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
    [newIndexSet addIndex:idx+1];
}];

NSLog(@"originalIndexSet: %@", originalIndexSet);
NSLog(@"newIndexSet:      %@", newIndexSet);

それで

originalIndexSet = newIndexSet;

NSLog出力:

originalIndexSet:[インデックスの数:2(2つの範囲内)、インデックス:(1 5)]
newIndexSet:[インデックスの数:2(2つの範囲内)、インデックス:(2 6)]

于 2013-01-13T02:35:58.960 に答える