Обработка связанных массивов NSMutable в серии операций - PullRequest
2 голосов
/ 19 марта 2012

Это может выходить за рамки того, что может делать Objective C.

Это включает в себя выполнение чего-либо с именованной переменной (например, 15 различных операций), а затем выполнение этих 15 операций над переменной с аналогичным именем,и так далее, скажем, 10 переменных.

Предположим, у меня есть набор из 10 NSMutableArray, например,

NSMutableArray *a =[[NSMutableArray alloc]init];
... 
NSMutableArray *j =[[NSMutableArray alloc]init];

, и я делаю 15 операций над ними, чтобы получить 15 различных переменных (также массивы илиточнее NSMutableArray's).Скажем, первое, что я делаю, это чтобы вычисление было произведено через 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 наборов кода «переключатель / регистр» и делать это вместо этого «динамически» (если такая вещьсуществует в Xcode и iOS) и избегает создания 10 раз по 15 переменных?

Или что я создаю и объявляю 150 переменных, но делаю это в некотором массиве, возможно, используя адресацию (& thru & j) переменной?

Это становится очень сложным, очень быстрым, и бывают случаи, когда некоторые из 10 массивов имеют много элементов, а другие из тех же массивов равны нулю (например, a может иметь 20 элементов, а j имеетnull elements)

PS: (Постскриптум в 6:56 вечера по Нью-Йоркскому времени 19 марта 2012 года) Я действительно надеялся, что смогу использовать какое-нибудь имя переменной, а затем префикс или суффикс с буквами от a до j;например:

ProductA = [[....;SelectorA = ....;

и подпрограмма просто берет письмо от A к J через enum, чтобы перевести это значение от 0 до 9.

Я не отвергаю предложенное ранее решениеПитер Цетински;Я просто еще не пытался это реализовать.

1 Ответ

1 голос
/ 20 марта 2012

Если вам нужно сохранить вычисленные значения для каждого массива, попробуйте использовать массив массивов

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
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...