2012-03-19 2 views
2

Возможно, это выходит за рамки того, что может сделать Objective C.Обработка связанных NSMutable массивов в серии операций

Он включает в себя выполнение чего-либо с именованной переменной (например, 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*/...; 

Скажем, пятнадцатый, что я делаю это, чтобы сделать расчет на это выборе через 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 переменных, но делаю это в некотором массиве, возможно, используя адресацию (& a thru & j) переменной?

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

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

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

и есть подпрограмма просто взять письмо от А до J с помощью перечисления, чтобы перевести, что 0 до 9.

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

ответ

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 
    } 
} 
+0

Я не думаю, что это ответ.
Во-первых, я должен объявить 10 раз 15 массивов, не так ли?
Во-вторых, во внутренней части 2-дюймовых циклов я вижу, что у вас есть aProduct и aSelection, где это не работает для b, c, ..., j.
Другими словами, я хочу только «Продукт», и когда он работает с «a» или «j», он будет префикс слова «Продукт» и «Выбор» с «a» через «j»
Если, конечно, , у вас есть опечатка, помещая aProduct вместо Product и т. д. –

+0

Нет, вам нужен только один массив, содержащий 10 массивов. Да, я просто использовал ваш псевдокод для aProduct. Продукт будет установлен для каждого вашего набора букв. –

Смежные вопросы