2011-09-22 79 views
1

我需要一些新手幫助。 所以基本上我試圖創建20個人物(玩家)。每個球員都有一個名字,年齡和身高。循環創建20個對象

而不是寫'Person * player = [[Person alloc] init];''二十次,我做了一個循環。 我認爲循環已經工作,因爲[myArray計數]有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

這些個人名稱,年齡,高度從何而來? – 2011-09-22 11:55:53

回答

4
  • 是對象獨特之處?對,他們是。
  • 給每個對象一個名字,年齡,身高的最佳方式是什麼?這個問題並不清楚,所以你給循環中的對象賦予年齡,身高和名字的方式是正確的,但是當然你要爲所有對象提供相同的信息;給他們唯一的名稱取決於你的應用程序邏輯,例如,你可以用這種方式隨機分配年齡:
player.age = arc4random()%90;

可以爲高度有一個稍微複雜的公式做同樣的(最終,如140 + arc4random()%50)。最後,對於高度,你可以用這種方式分配派生名稱:

player.name = [NSString stringWithFormat:@"Player-%d",i];

其指定名稱球員-0,玩家-1,...

  • 最後打印出的數據的NSLog:
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++; 
} 
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你的對象將從這個語句返回的字符串。