从NSMutableArray(控制台)中的对象获取值

时间:2011-09-22 20:59:35

标签: objective-c

作为新手,我坚持从我放入NSMutableArray的对象中获取值。为了全面了解我的问题,我将非常感谢您阅读以下内容:

(在Xcode中写入控制台)

让我说我按如下方式生成一个新对象:

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

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

当我继续编写我的程序时,我可以更改播放器的上述值,即

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

如果我想创建另一个Person(player2),我会像这样重复上面的内容:

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

player1.age = 13;
player1.height = 4;
player1.name = @"player1";

在我的程序中,我现在可以更改和比较2个对象的值,即

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中的对象? (不是在运行时间)

如果[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];

打印出&gt;&gt;人的身高是10

我真的很感谢你帮助我 - 作为一个新手,我发现很难继续前进,直到我理解了这个问题。非常感谢您阅读本文。

1 个答案:

答案 0 :(得分:0)

您需要研究NSArray的文档,特别是objectAtIndex方法。

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

会给你你想要的价值。我会打破这个:

  • (Person*)告诉编译器你希望得到一个Person对象
  • objectAtIndexage的索引15处返回一个对象(任何对象,因此转换为Person,以防止编译器抱怨它可能不响应myArray
  • 必须在返回的对象上调用
  • age,因为您无法在投射对象上使用点表示法

或者,您可以这样做:

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

一旦有了已知类型的对象,就可以使用点语法。

相关问题