В моем приложении есть огромное количество списков массивов. Вот почему я добавил все массивы в один список основных массивов, и я инициализировал их с помощью цикла «для».
Вы, кажется, неправильно понимаете, как работают переменные и ссылочные типы. Может быть, следующие поможет:
Вашей строки коды:
NSMutableArray *mainArray = [[NSMutableArray alloc] initWithObjects:nameArray, idArray, masterIdNameArray, masterIdArray, nil];
копия ссылки, хранящейся в каждом из переменныхnameArray
, idArray
и т.д. и сохраняют эти ссылки в новом массиве.
Где-то вы должны объявить каждую из этих переменных, например. что-то вроде:
NSMutableArray *nameArray;
Объявляет переменнуюnameArray
, который может содержать ссылку на изменяемый массив, который является ссылкой типа NSMutableArray *
. Переменная инициализируется значением nil
- значением «без ссылки».
Когда первая строка кода выполняется значение в каждой переменной передается в вызове метода, не сама переменная, так что вызов эффективно:
NSMutableArray *mainArray = [[NSMutableArray alloc] initWithObjects: nil, nil, nil, nil, nil];
и mainArray
устанавливается для ссылки новый измененный массив с нулевыми элементами - поскольку все ссылки до первогоnil
в списке аргументов используются в качестве начальных значений в массиве.
После того, как mainArray
был настроен таким образом, любая операция на нем не влияет на значения, хранящиеся в переменных nameArray
и др. - связь с этими переменными отсутствует. В вашем цикле:
for (NSMutableArray *array in mainArray) {
array = [[NSMutableArray alloc] init];
}
Переменная array
новая переменная, которая устанавливается в свою очередь, к каждому из значений в mainArray
. Переменная array
не становится псевдонимом для каждой из переменных nameArray
и др. в свою очередь - mainArray
содержит значения не переменные.
HTH, и теперь вы понимаете, почему ваш код никогда не мог сделать то, что вы намеревались, - который задает значения, хранящиеся в переменных nameArray
и др..
Да .. Вам не нужно инициализировать массив снова внутри цикла. Его уже инициализировали –
, так как мы можем массивы массива – AbhiRam
Попробуйте это ....... array = [NSMutableArray array]; – DilumN