개체의 NSMutableSet이 있습니다. 모든 개체는 분명히 고유하지만 .angle 값 (NSInteger 속성)을 가질 수 있습니다.NSMutableSet에서 동일한 속성 값을 가진 개체 찾기
동일한 .angle 값을 가진 개체가 두 개 이상 있는지 그룹화 한 다음 배열로 그룹화해야합니다.
어떻게 할 수 있습니까?
모든 안내 사항을 높이 평가할 것입니다.
개체의 NSMutableSet이 있습니다. 모든 개체는 분명히 고유하지만 .angle 값 (NSInteger 속성)을 가질 수 있습니다.NSMutableSet에서 동일한 속성 값을 가진 개체 찾기
동일한 .angle 값을 가진 개체가 두 개 이상 있는지 그룹화 한 다음 배열로 그룹화해야합니다.
어떻게 할 수 있습니까?
모든 안내 사항을 높이 평가할 것입니다.
사용 자 NSPredicate의 인스턴스는 관심있는 특성을 필터링하는 예를 들면 다음과 같습니다. 자 NSPredicate의 예를 들어
NSSet *dogs = [NSSet setWithObjects:
[Dog dogWithName:@"Fido" age:2],
[Dog dogWithName:@"Fluffy" age: 3],
[Dog dogWithName:@"Spot" age:2],
nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == %d", 2];
NSSet *twoYearOldDogs = [dogs filteredSetUsingPredicate:predicate];
NSLog(@"%@", twoYearOldDogs);
데이터의 크기에 따라 달라질 수 있습니다. 큰 경우 .angle로 정렬하고 중복을 찾아야 할 수도 있습니다. 간단한 방법은 데이터 세트의 복사본을 만들고, 반복하고, 항목 N에 대해 N + 1을 모두 같은 .angle으로 끝까지 봅니다. 발견되면이 사본 세트에서 해당 사본을 제거하고 출력 집합에 추가합니다.
NSMutableArray의 sortUsingFunction : context : 메서드를 사용할 수 있습니다. (비록 당신이 당신의 작업을 더 효율적으로 완료 할 수 정렬)입니다.
NSComparisonResult compare(YourClass *firstObject, YourClass *secondObject, void *context) {
if ([firstObject angle] < [secondObject angle])
return NSOrderedAscending;
else if ([firstObject angle] > [secondObject angle])
return NSOrderedDescending;
else
{
//Normally here NSOrderedSame is returned.
//Put your logic stuff here.i.e. storing object for having common angle.
}
}
희망이 있습니다.
감사합니다. – dredful
네, 그게 내가 찾고 있던 것입니다. 고마워요. – devster