我需要一些新手的帮助。 所以基本上我试图创建20个单独的对象(玩家)。每位球员都有姓名,年龄和身高。
而不是写'Person * player = [[Person alloc] init];'二十次,我做了一个循环。 我认为循环有效,因为[myArray count]有20个对象。
我的问题:
20个对象是否唯一(所有具有相同的名称,年龄,身高)?
为MyArray的每个元素中的每个对象提供名称,年龄,身高的最佳方法是什么?
所以我的最终目标是能够做到这样的事情:
NSLog(@"%@ is %i high and is %i years old", player1.name, player1.height, player1.age);
NSLog(@"%@ is %i high and is %i years old", player2.name, player2.height, player2.age);
等...
我希望上述内容有道理,我非常感谢你的帮助。
#import <Foundation/Foundation.h>
#import "Person.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *myArray = [[NSMutableArray alloc]initWithCapacity:20];
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];
}
NSLog(@"The number of players in myArray = %i", [myArray count]); // I now have 20 players (objects) in myArray.
//How can I now give each player object an individual name, age & height ??
[pool drain];
return 0;
}
答案 0 :(得分:4)
player.age = arc4random()%90;
您可以对高度执行相同操作(最终使用稍微复杂的公式,例如140 + arc4random()%50)。最后,对于高度,您可以通过以下方式指定派生名称:
player.name = [NSString stringWithFormat:@"Player-%d",i];
分配名称Player-0,Player-1,...
NSLog(@"Player %d : name=%@ height=%d age=%d",i,player.name,player.height,player.d)
或在不同的循环中:
int i = 0;
for(Person *player in myArray) {
NSLog(@"Player %d : name=%@ height=%d age=%d",i,player.name,player.height,player.d);
i++;
}
答案 1 :(得分:0)
一些项目。
如果我理解您的后续问题,您要查看的是访问存储在数组中的对象,以便您可以更改其属性的值。
然而,上面的海报回答了你问的实际问题,你应该标记他的正确。
如果您想浏览阵列中的每个项目,请执行以下操作:
for (int i=0; i<[players count]; i++) {
Player *aPlayer = [players objectAtIndex:i];
aPlayer.name = @"joe";
}
如果您只想访问单个玩家:
Player *aPlayer = [players objectAtIndex:4];
aPlayer.name = @"joe";
此外,您可能希望自定义Player类并覆盖描述,这样您就不必重复键入复杂的NSLog语句。
-(NSString *)description{
return [NSString stringWithFormat:@"name = %@ age = %d height = %d", self.name, self.age, self.height];
}
通过重写描述方法,在对象上调用NSLog将返回此语句中的字符串。