получение значений из Objects в NSMutableArray (console) - PullRequest
0 голосов
/ 23 сентября 2011

Как новичок, я застрял на получении значений от объектов, которые я поместил в NSMutableArray.Чтобы дать полную картину моей проблемы, я был бы признателен вам прочитать следующее:

(запись в консоль в Xcode)

Допустим, я создаю новый объект следующим образом:

Person *player = [[Person alloc] init];

player.age = 10;
player.height = 10;
player.name = @"player";

Поскольку я продолжаю писать свою программу, я могу изменить вышеуказанные значения плеера, например:

player.age = 23; etc.....

Если я хочу создать другого персонажа (player2), я повторяю вышеупомянутое, как это:1012 *

Теперь в моей программе я могу изменить и сравнить значения двух объектов, т.е.

if (player.age == player1.age) bla bla bla

Моя проблема начинается, если я хочу создать более 20 объектов Person - я знаю, как разместить все объектыв цикле / NSMutableArray следующим образом:

for (int i = 0; i < 20; i++)
{
    Person *player = [[Person alloc] init];

    player.age = 10;
    player.height = 10;
    player.name = @"player";
    [myArray addObject:player];       
    [player release];         
}

Все объекты в myArray являются индивидуальными, но имеют одинаковые значения.Все в порядке !Но как получить или изменить объекты в myArray?(не во время выполнения)

If [myArray objectAtIndex: 4];содержит следующие значения:

player.age = 10;
player.height = 10;
player.name = @"player";

как мне добраться до объекта (ов) в myArray, чтобы я мог сравнить / отсортировать / добавить и т.д ..

Вот пример того, что я хочуделаю, но я знаю, что это неправильно:

if (player.age == [myArray personAtIndex:15.age];

или

NSLog(@"@ has a height of %i",[myArray personAtIndex:15:name:height];

распечатывает >> у человека рост 10

Я действительно был бы признателен за помощь вэто - как новичок, мне трудно двигаться дальше, пока я не пойму эту проблему.Большое спасибо за чтение этого.

1 Ответ

0 голосов
/ 23 сентября 2011

Вам необходимо изучить документацию для NSArray, в частности метод objectAtIndex.

[[(Person*)myArray objectAtIndex:15] age] 

Даст вам значение, которое вы хотите. Я сломаю это:

  • (Person*) сообщает компилятору, что вы ожидаете получить объект Person обратно
  • objectAtIndex возвращает объект (любой объект, следовательно, приведение к Person выше, что предотвращает жалобу компилятора на то, что он может не отвечать на age) с индексом 15 myArray
  • age должен быть вызван для возвращаемого объекта, потому что вы не можете использовать точечную запись для приведенных объектов

В качестве альтернативы вы можете сделать:

Person *aPerson = (Person*)[myArray objectAtIndex:15];
aPerson.age = 15;

Если у вас есть объект известного типа, вы можете использовать точечный синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...