这可能超出了Objective C可以做的范围。
它涉及对命名变量(例如15个不同的操作)执行某些操作,然后对类似命名的变量执行这15个操作,依此类推,例如10个变量。
假设我有一组10个NSMutableArray;例如。
NSMutableArray *a =[[NSMutableArray alloc]init];
...
NSMutableArray *j =[[NSMutableArray alloc]init];
我对它们进行了15次操作以获得15个不同的变量(也是数组或更准确的NSMutableArray)。让我们说我做的第一件事就是让计算成为通过j的产物:
for (int i=0;i<[a count]; i++)
aProduct = /* some operation upon NSMutableArray a*/...;
...
for (int i=0;i<[j count]; i++)
jProduct = /* some operation upon NSMutableArray j*/...;
让我们说我做的第15件事是进行计算,这是通过j的选择:
for (int i=0;i<[a count]; i++)
aSelection = /* some operation upon NSMutableArray a*/...;
...
for (int i=0;i<[j count]; i++)
jSelection = /* some operation upon NSMutableArray j*/...;
现在我正在使用开关/案例进行编码,这涉及到很多思考,初始化,甚至发现我在一个“案例”声明中做了一个拼写错误(遗漏了)并且当我复制了代码,这个错误传播下来。
那么有没有办法避免使用15组“switch / case”代码,而是“动态地”(如果在Xcode和iOS中存在这样的东西)并避免创建10次15变量?
或者我创建并声明了150个变量,但是在某个数组中这样做,也许是通过使用变量的寻址(&amp; a thru&amp; j)?
这变得非常复杂,非常快,有时候10个阵列中的一些有很多元素,而其他相同的数组都是null(例如a可能有20个元素,而j有null元素)
PS :(后记于纽约时间下午6点56分19Mar2012)我实际上希望我可以使用一些变量名,然后用字母a到j前缀或后缀;例如:
ProductA = [[....; SelectorA = ....;
并让子程序只通过枚举从A到J的字母转换为0到9。
我并不拒绝Peter Cetinski先前提出的解决方案;我还没有尝试过实现它。
答案 0 :(得分:1)
如果需要维护每个数组的计算值,请尝试使用数组数组
NSMutableArray *arrOfArrays = [[NSMutableArray alloc] init];
[arrOfArrays addObject:a];
.....
[arrOfArrays addObject:j];
for ( NSMutableArray *arr in arrOfArrays ) {
for (int i=0;i<[arr count]; i++) {
aProduct = /* some operation upon NSMutableArray arr*/...;
.....
aSelection = /* some operation upon NSMutableArray arr*/...;
//do something with your computed values
}
}