在一系列操作中处理相关的NSMutable数组

时间:2012-03-19 15:45:21

标签: ios matrix nsmutablearray

这可能超出了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先前提出的解决方案;我还没有尝试过实现它。

1 个答案:

答案 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
   }
}