2012-01-18 2 views
0

NSMutableArray에 객체가 여러 번 들어 있는지 (예 : 배열에 1,2,3,1,4가 들어 있는지) 확인해야합니다. 배열에 1이 몇 번 있는지 알고 싶습니다. 나는 containsObject:을 알고 있지만이 종류의 수표에 어떻게 사용합니까?NSMutableArray에 객체가 포함됨

답변

1

NSCountedSet은 중복 값이 ​​몇 번 발생했는지 추적하려는 경우 유용 할 수 있습니다.

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html#//apple_ref/occ/cl/NSCountedSet

+0

안녕하세요 ElanthiraiyanS : 정말 감사합니다. 새롭고 흥미로운 것이 있습니다. 오늘 배웁니다. 제 문제를 해결했습니다. 귀하의 도움에 감사드립니다. 나는 이것을 좋아했다 : NSCountedSet * mySet = [[NSCountedSet alloc] initWithArray : checkedBusinessIdArray]; int valueCount = [mySet countForObject : m_CheckinedBusinessID]; NSLog (@ "이 개체의 개수는 % d 개입니다., valueCount); if (valueCount> = 2) { businessCheckinCount = NO; } – user1115985

+0

환영합니다. 행복하게 도와 줬어. – sElanthiraiyan

0

빠른 방법은 NSSet으로 변환 한 다음 다시 배열로 변환하는 것입니다. NSSets는 중복을 포함 할 수 없습니다. 또는 루프를 사용하여 값을 하나씩 새 배열로 복사하고 매번 새로운 배열에 추가하기 전에 객체의 복사본이 없는지 확인하십시오.

+0

하지만 중복 값이 ​​얼마나 많은지 알고 싶습니다. 배열에 중복 값이 ​​몇 번 나오는지 제안 해주세요. – user1115985

0

그것은 개체 유형에 따라 다르지만 그들이있는 NSDictionary에 대한 키로 사용할 수있는 경우, 나는 각 객체 인스턴스에 대한 카운트를 포함하는의 NSNumber 객체를 가리키는 NSMutableDictionary를 만들 것입니다. 뭔가를 같이 :이 코드의 끝에

NSArray *array = whatever; 
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:array.count]; 
for (id obj in array) 
{ 
    NSNumber *number = [d objectForKey:obj]; 
    if (number == nil) 
    { 
    [d setObject:[NSNumber numberWithInt:1] forKey:obj]; 
    } 
    else 
    { 
    [d setObject:[NSNumber numberWithInt:([number intValue]+1) forKey:obj]; 
    } 
} 

, 당신은 키가 원래 객체와 값이 해당 키가 원래 존재하는 횟수를 포함 NSNumbers 있습니다있는 NSDictionary로 남아 있습니다.

관련 문제