如何使用快速枚举修改NSArray的字符串元素



任何人都可以建议如何使用快速枚举NSArray的字符串元素。用普通的for循环做同样的事情很容易。下面的代码运行正常

_tempArray = [[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F", nil];
NSUInteger i=0;
for (; i<[_tempArray count]; i++) {
     if ([[_tempArray objectAtIndex:i] isEqualToString:@"A"]) {
            [_tempArray replaceObjectAtIndex:i withObject:@"a"];
      }
}

我想做与上面的快速枚举代码相同的事情。我尝试了下面的代码,但它给出了*****错误: Collection <__NSArrayM: 0x610000043090>在枚举时发生了突变。******,这意味着在枚举集合时不可能修改它。有谁能提出任何方法来实现它? **

NSUInteger j=0;
    for (NSString *temp in _tempArray) {
        if ([temp isEqualToString:@"A"]) {
            [_tempArray replaceObjectAtIndex:j withObject:@"a"];
        }
        j++;
    }

如何修改字符串元素的NSArray使用快速枚举?

没有。在枚举期间不应该修改数组。这不是一个任意的限制——这样做可能会导致逻辑错误。

如果要修改/转换数组,则使用显式索引的for循环。

您可以使用数组索引语法来收紧代码:

for (int i=0; i<_tempArray.count; i++) {
    if ([_tempArray[i] isEqualToString:@"A"]) {
        _tempArray[i] = @"a";
    }
}

最新更新