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 回答