그래서 여러 개의 NSArrays (실제로 5)가 있고 모든 배열에 공통된 객체 만 포함하는 새 NSArray를 만들고 싶습니다. 이 작업을 수행하는 효율적인 방법이 있습니까? 내가 생각할 수있는 유일한 방법은 각 객체를 비교하는 모든 배열을 반복하는 것입니다.다중 NSArray 및 공통 객체
1
A
답변
3
: 여기
몇 가지 예제 코드입니다NSMutableSet *set = [NSMutableSet setWithArray:array];
NSMutableSet *set1 = [NSMutableSet setWithArray:array2];
NSMutableSet *set2 = [NSMutableSet setWithArray:array3];
NSMutableSet *set3 = [NSMutableSet setWithArray:array4];
NSMutableSet *set4 = [NSMutableSet setWithArray:array5];
[set intersectSet:set1];
[set intersectSet:set2];
[set intersectSet:set3];
[set intersectSet:set4];
NSArray *allArray = [set allObjects];
+0
내 목표는 일치하는 인스턴스의 합계를 계산하고 비슷한 시나리오를 취한 것이지만 정확하게는 아닙니다. 게시 해 주셔서 감사합니다 : NSArrays의 모든 내용을 덤핑 한 후 NSCountedSet 접근 방식을 사용하기로 결정했습니다. 그래도 확장성에 대해서는 잘 모르겠습니다. @ gypsyDev 다시 감사합니다. – ChrisHaze
3
NSSet (실제로는 NSMutableSet)을 생성하고 5 개의 모든 배열의 내용을 덤프 한 다음 NSSet에서 새 NSArray를 생성해야하는 이유는 무엇입니까?
죄송합니다. 원래 질문을 잘못 읽었습니다. 네, 중복을 찾기 위해 각각 하나씩 반복해야한다고 생각합니다. 그러나 구현이 너무 끔찍하지는 않습니다 (그러나 배열이 거대한 경우 런타임이 다소 느릴 수 있음). 나는 아주 잘 작동하는이를 사용하여 종료
- (void) filterSet: (NSMutableSet*)set withArray: (NSArray*) array {
NSMutableSet* removals = [NSMutableSet setWithCapacity:[array count]];
for (id obj in set) {
if (! [array containsObject: obj]) {
[removals addObject: obj];
}
}
[set minusSet: removals];
}
NSMutableSet* mySet = [NSMutableSet setWithCapacity:[array1 count] * 5];
[mySet addObjectsFromArray: array1];
[self filterSet: mySet withArray: array2];
[self filterSet: mySet withArray: array3];
[self filterSet: mySet withArray: array4];
[self filterSet: mySet withArray: array5];
NSArray* filteredArray = [mySet allObjects];
관련 문제
- 1. NSArray : 동일한 값을 가진 다중 객체 추가
- 2. 다차원 NSArray 객체
- 3. NSArray 정렬 및 NSArray 반환?
- 4. 공통 코드가있는 다중 데이터베이스 사용
- 5. NSArray mutability 및 arrayByAddingObject
- 6. UITableView 및 NSArray 도움말
- 7. NSMutableDictionary 및 NSArray
- 8. .Net에서 다중 인터페이스 및 객체 인스턴스 구현
- 9. 부스트 직렬화 다중 객체
- 10. 자바 스크립트 객체 및 함수로 놀고,이 발견했습니다 (아마 공통)
- 11. 배열에서 다중 객체 제거
- 12. 다중 기능의 객체 사용
- 13. 다중 객체 배열 유형?
- 14. 공통 모듈에 대한 파이썬 다중 가져 오기
- 15. jquery 공통 태그 이름이있는 다중 선택기
- 16. CMake로 공통 객체 파일을 재 컴파일하지 않습니까?
- 17. NSArray 및 샌드 박스 질문
- 18. NSArray 초기화 및 NSInteger 추가
- 19. 있는 NSArray 수명주기
- 20. 콘솔 및 GUI의 공통 디자인
- 21. Silverlight 및 .NET의 공통 리소스
- 22. 숫자 N으로 초기화 된 NSArray 만들기 동일한 객체의 모든 객체
- 23. Codeigniter 및 다중 상속
- 24. 값이있는 NSArray
- 25. 표시있는 NSArray
- 26. randomize NSArray
- 27. NSArray, UITableView
- 28. NSArray SIGABRT
- 29. 다중 스레드 안전, 원자 객체 생성 및 스왑 수행 방법
- 30. Dao 메서드, 단일/다중 객체 조작 및 리소스 닫기
나는 당신의 의견에 간단한 해결책을 찾는 언급 –
... 당신이 그들을 통해 루프 생각합니다 이전 질문에 당신은 정교 할 수 있습니까? – ChrisHaze
@ChrisHaze 아, 미안하지만, 내 해결책으로 내 원래 질문을 편집했습니다. 내가 그것을 새로운 대답으로 추가하고 올바른 것으로 받아들입니다. :) – gypsyDev