我有一个NSMutableIndexSet,我希望能够添加和存储索引设置为1,计划使用块来执行此操作,这是我到目前为止所拥有的:
[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
//add and store back the set here
idx++;
}];
有没有办法同时进行迭代和修改?如果有,怎么样?上面的代码似乎不起作用
答案 0 :(得分: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)]