任何人都可以建议如何使用快速枚举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";
}
}