2011-04-23 7 views
0

동물 객체로 가득 찬 NSArray가 있고 그 이름이 문자열 속성이라고합니다. 배열을 반복하면서 유사한 이름의 실행 집계를 어떻게 얻을 수 있습니까?iPhone에서 배열의 고유 항목에 대한 실행 집계 방법은 무엇입니까?

고양이 - 밥 개수 : 1

개 - 샐리 개수 : 1

고양이 - 밥 개수 : 2

토끼 - 밥 횟수 : 3

물고기 - 샐리 개수 : 2

이름이 정적이 아닌 동적 인 경우 어떻게 이러한 int를 얻을 수 있습니까?

+0

동물 클래스 (및 하위 클래스)의 선언은 무엇입니까? –

답변

1

가장 직접적인 방법은 NSMutableDictionary를 사용하는 것입니다. 각 이름에 대해 사전에서 해당 이름의 NSNumber를 가져 오십시오. 하나가 발견되면 1을 더하고 다시 저장하십시오. 그렇지 않다면, 값 1로 새 것을 작성한 후 저장하십시오.

0

NSMutableDictionary를 사용하여 이름 개수를 유지할 수 있습니다. 추천

뭔가 :

NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:10]; 

NSString *name = [NSString stringWithFormat:@"Bob"];  
NSNumber *number = (NSNumber *)[dic objectForKey:name]; 

if (number == nil) // There is no occurrence of the name in Dictionary 
{ 
    number = [NSNumber numberWithInt:1]; 
    [dic setObject:number forKey:name]; 
} 
else // There is already an occurrence of the name in dictionary, so increment counter 
{ 
    number = [NSNumber numberWithInt:(number.intValue + 1)]; // Increments counter for Name 
    [dic objectForKey:name]; 
} 

라인 "의 NSNumber 번호 = * (*의 NSNumber) DIC objectForKey : 이름]"특정 이름이 등장 횟수를 검색한다.

[dic allKeys]를 사용할 수도 있습니다. 사전에있는 모든 이름을 검색합니다.

관련 문제