2010-07-19 3 views
0
NSArray *planetArray = [NSArray arrayWithObjects:@"Earth", 
               @"Jupiter", 
               @"Saturn", 
               @"Neptune", 
               @"Pluto", nil]; 
NSMutableArray *objectArray = [[NSMutableArray alloc] init]; 

for(NSString *eachPlanet in planetArray) { 
    Planet *newPlanet = [[Planet alloc] init]; 
    [newPlanet setValue:eachPlanet forKey:@"name"]; 
    [newPlanet setValue:@"TEST" forKey:@"type"]; 
    [newPlanet setValue:[NSNumber numberWithInt:1234] forKey:@"mass"]; 
    [objectArray addObject:newPlanet]; 
    [newPlanet release]; 
} 

for(Planet *displayEachPlanet in objectArray) { 
    NSLog(@"DATA: %@", displayEachPlanet); 
} 

[objectArray release]; 

이것이 개체를 만들고 배열의 각 항목에 대해 iVar를 설정하는 가장 좋은 방법인지 궁금합니다. 기본적으로 나는 :루프에서 객체 생성 및 iVars 설정?

  1. 플래닛 객체 (있는 NSString의 배열)을 바르 설정
  2. 배열에 행성 객체를 추가 만들기. 지구를 해제
  3. 내 행성을 인쇄

  4. 배열을

NB 해제

  • 객체 객체 : 난 그냥 테스트입니다, 이것은 아무것도 아니다, 그냥 궁금했다. ..

    건배 게리

  • 답변

    3

    그렇게하는 것에 대해 크게 잘못된 것을 볼 수 없습니다.

    -(Planet*) initWithName:(NSString*)name andType:(NSString*)type withMass:(int)mass; 
    

    그리고 다음과 지구 생성 : 한 가지 제안의 라인을 따라, 당신의 행성 클래스에 대한 확장 된 initialiser을하는 것입니다

    Planet *newPlanet = [[Planet alloc] initWithName:eachPlanet andType:@"Test" withMass:42]; 
    
    +0

    나는 그 생각을하지 않았고, KVC를보고 있었고, 왜 내가 루프에서 iVars를 설정했는지 알았습니다. Thats 아주 좋은 지적, 고마워. – fuzzygoat

    1

    나에게 잘 어울려. 객체로 수행하는 모든 작업이 그 객체에서 무언가를 인쇄하는 경우 초기화와 같은 작업을하지 않고 루프에서 수행 할 수 있습니다. 단, 테스트 일 뿐이라면 괜찮습니다.

    +0

    많은 감사, 감사합니다. – fuzzygoat