大约一天前我发布了这个问题:对枚举感到困惑......如何在枚举期间更改对象?
我了解到我可以在枚举期间调用对象上的方法,但是如果我使用"="运算符进行分配,那么它会创建一个新对象(不是我想要的).
链接的问题显示了如何在NSString对象的数组上使用setString ...但现在我的问题是自定义对象
这就是我想要做的
for (Car * car in self.carsArray)
{
if (car.name == nil){
car = [self getrandomCar];
}
}
Run Code Online (Sandbox Code Playgroud)
但是,"="运算符对我不起作用...是否有某种类型的方法可以像这样使用?
[car setObject:[self getrandomCar];
Run Code Online (Sandbox Code Playgroud)
谢谢!
首先,如果要更改数组中指向的对象,则必须更改数组,而不是快速枚举为您提供的指针.其次,你不能在快速枚举期间更改阵列(好吧,你可以,但它会在你脸上爆炸).我建议你在枚举之前复制一个数组,然后在枚举期间修改它,在枚举完成后丢弃原始数组.例如:
tempArray = [self.carsArray mutableCopy];
for (Car * car in self.carsArray)
{
if (car.name == nil){
[tempArray replaceObjectAtIndex:[self.carsArray indexOfObject:car] withObject:[self getrandomCar]];
}
}
[self.carsArray release];
self.carsArray = [tempArray copy];
[tempArray release];
tempArray = nil;
Run Code Online (Sandbox Code Playgroud)
它并不像你想要的快速枚举那么漂亮,但是如果你想通过枚举来改变数组就必须要做的事情.
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |