nsarray에서 문자열을 찾는 방법?
문제
이것은 그런 어리석은 질문처럼 느껴지지만 어떻게 문자열을 찾을 수 있습니까? NSArray
?
나는 사용을 시도했다
[array indexOfObjectIdenticalTo:myString]
그러나 그것은 찌르기가 같은 주소를 가져야합니다.
누구 든지이 작업을 수행하는 방법에 대한 팁이 있습니까?
해결책
당신은 원합니다 그만큼 indexOfObject:
방법, 배열에서 각 객체를 보내서 개체를 찾습니다. isEqual:
메시지.
다른 팁
베드로의 대답이 맞습니다.
하나의 추가 메모; 배열에 톤과 톤이 있다면 -indexOfObject:
선형 검색을 할 것입니다. 이것은 다른 컨테이너 사용을 고려해야하는 성능 병목 현상 일 수 있습니다. NSSET 또는 NSDICTION, 아마도 (문자열의 의미에 따라 다름).
또 다른 gotcha는 현이 모두 비교적 비슷하거나 상대적으로 길면입니다.
물론, 분석 도구를 사용하여 성능 문제가 있음을 증명할 때까지 아무것도 최적화하지 마십시오.
nsorderset을 컨테이너로 사용할 수 있으며 nsordedset 클래스 참조의 오버 뷰는 다음과 같습니다.
NSORDEREDSET 및 하위 클래스 인 NSMutableARDEREDSET은 프로그래밍 방식의 인터페이스를 주문한 객체 모음으로 선언합니다.
NSORDEREDSET은 고유 한 개체의 정적 세트에 대한 프로그래밍 인터페이스를 선언합니다. 정적 세트의 항목을 만들 때 정적 세트의 항목을 설정 한 후 항목을 수정할 수 없습니다. 반면에 nsmutableArderedset은 동적 객체의 동적 세트에 대한 프로그래밍 인터페이스를 선언합니다. 동적 (또는 Mutable)은 언제든지 항목의 추가 및 삭제를 허용하여 필요에 따라 메모리를 자동으로 할당 할 수 있습니다.
요소의 순서가 중요 할 때 순서 세트를 배열 대안으로 사용할 수 있으며 세트에 객체가 포함되어 있는지 테스트 할 때 성능이 고려 사항입니다.> 배열의 멤버십 테스트는 세트의 멤버십 테스트보다 느리게 진행됩니다. .
포함 :
주어진 객체가 배열에 있는지 여부를 나타내는 부울 값을 반환합니다.
- (BOOL)은 다음을 포함합니다.
반환 값예, ANOBJECT가 배열에있는 경우, 그렇지 않으면 아니요.
논의
이 메소드는 각 배열의 객체에 isequal : 메시지를 전송하여 ANOBJECT가 배열에 존재하는지 여부를 결정합니다 (및 각 isequal : message에 매개 변수로 anobject를 전달).
선언
nsarray.h