Массив сохраняет возвращающийся нуль

Поэтому у меня есть массив имен учеников. Я запускаю тестовые данные, поэтому я просматриваю цикл, выделяя и инициализируя каждого ученика, а затем просто бросаю его в stuArr Если я NSLog мой Student.h init (), он даст мне имена, которые я ожидал бы, но когда я попробую чтобы вызвать их вне моего метода, я получаю нулевые значения:

 - (void)viewDidLoad { [super viewDidLoad]; for (int i = 0; i < 5; i++) { stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]]; id test = [stuArr objectAtIndexedSubscript:i]; NSLog(@"%@", [test stuName]); } } 

Я пропустил что-то жизненно важное здесь? Если нужно, я могу бросить в свой файл Student.m, но там все кажется прекрасным.

    Я предполагаю, что перед этой строкой следует добавить + init stuArr:

     stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]]; 

    Или попробуйте сделать что-то вроде этого:

     - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *mutStudentsArray = [NSMutableArray array]; for (int i = 0; i < 5; i++) { [mutStudentsArray addObject:[[Student alloc] init]]; id test = [mutStudentsArray objectAtIndex:i]; NSLog(@"%@", [test stuName]); } stuArr = [NSArray arrayWithArray:mutStudentsArray]; } 

    tikhop прав: если вы заполняете массив в цикле for, вы должны инициализировать NSMutableArray (изменяемый массив, потому что вы меняете массив в цикле), прежде чем его заполнить. в цикле вы добавляете объекты в массив с помощью [array addObject:id] .

    Что [array arrayByAddingObject:id] делает это, он создает копию принимающего массива и добавляет новый объект в конец. что означает, что вам нужно будет сделать что-то вроде следующего (не имеет смысла делать это в for-loop, хотя, возможно, это помогает понять):

     - (void)viewDidLoad { [super viewDidLoad]; NSArray *stuArr = [NSArray alloc] init]; //stuArr can be used now for (int i = 0; i < 5; i++) { //someCopiedArr is some existing array- arrayByAddingObject will copy someArr and add an object stuArr = [someArr arrayByAddingObject:[[Student alloc] init]]; id test = [stuArr objectAtIndexedSubscript:i]; NSLog(@"%@", [test stuName]); } } 

    В конце stuArr будет копией someArr только с добавленным объектом до конца.

    Interesting Posts

    Как мне форматировать текст UITextfield, который является номером телефона, в американском стиле?

    iOS: просмотр прокрутки до текущей позиции курсора в текстовом режиме

    Невозможно увидеть элементы из раскадровки внутри viewcontrollers

    Как создать массив из двух строк из последовательности пар ключ-значение (кортеж) в swift

    kAudioUnitType_Output аудиоустройство с отсечением kAudioUnitSubType_VoiceProcessingIO

    Дублируемое определение интерфейса класса Parse

    Как изменить цвет диалогового окна UIAlertView в iOS?

    Как узнать расстояние от края нижней безопасной области до нижней части экрана?

    не удалось установить приложение на iPhone 5s

    Отсутствует закрытый ключ в доступе к цепочке ключей

    API Quickblox в быстрых сбоях с непризнанным селектором

    ] возвращает старые значения

    Как повернуть что-то, используя spritekit относительно координат касания пользователя

    Ошибки отправки обновленной версии для перенесенного приложения iOS

    Разработка iOS: добавление кнопки «Добавить друга» в моем приложении

    Давайте будем гением компьютера.