Objective C에 두 개의 배열이 있는데 어떤 인덱스를 찾을 필요가 있으므로 같은 위치에 삽입 할 수 있습니다. 예를 들어, "이름 배열"과 "연령 배열"이 있다고 가정 해 봅시다. "나이 배열"에 나이를 삽입 할 위치를 알 수 있도록 "charlie"인덱스가 "name array"에 있는지 어떻게 알 수 있습니까?Objective C에서 배열 인덱스를 결정하는 방법은 무엇입니까?
감사
Objective C에 두 개의 배열이 있는데 어떤 인덱스를 찾을 필요가 있으므로 같은 위치에 삽입 할 수 있습니다. 예를 들어, "이름 배열"과 "연령 배열"이 있다고 가정 해 봅시다. "나이 배열"에 나이를 삽입 할 위치를 알 수 있도록 "charlie"인덱스가 "name array"에 있는지 어떻게 알 수 있습니까?Objective C에서 배열 인덱스를 결정하는 방법은 무엇입니까?
감사
-[NSArray indexOfObject:]
는 논리적 인 선택이 될 것 같다.
문자열을 기반으로 조회를 수행하는 경우 NSDictionary도 사용할 수 있습니다.
좋은 지적입니다. 사람들은 종종 사전에 문자열을 검색하는 동안 일정한 시간이 걸리는 반면 주어진 문자열에 대한 배열 검색은 선형 시간을 필요로한다는 사실을 간과합니다. Chuck은 어레이를 위해 그것을 수행하는 방법에 대해서는 올바르지 만, 스파 스 설명을 기반으로해서, 사전은 큰 잠재적 솔루션과 같이 보입니다. –
그래도 상수가 크거나 줄이 짧으면 선형 시간이 상수 시간보다 빠를 수 있다는 것을 기억해야합니다. 기본적으로, 성능상의 문제라는 것을 측정하여 확인하기 전까지는 걱정하지 마십시오. –
코코아에서 병렬 배열은 파멸과 폐허로가는 길입니다. Bindings와 함께 효과적으로 사용할 수 없으므로 Bindings가없는 것처럼 많은 양의 접착제 코드를 작성해야합니다. 또한 구현하기 전에 AppleScript/Scripting Bridge 지원을 중단해야합니다.
올바른 방법은 name
및 age
속성을 사용하여 모델 클래스를 만들고 해당 클래스의 인스턴스를 단일 배열로 만드는 것입니다. 그런 다음 이름 또는 나이별로 항목을 찾으려면 NSPredicate
을 사용하여 배열을 필터링하고 indexOfObjectIdenticalTo:
을 사용하여 주 배열의 필터링 된 배열에서 각 항목의 색인을 찾으십시오.
indexOfObject:
과 indexOfObjectIdenticalTo:
의 차이는 전자가 후자 만이 전달 된 특정 개체를 찾습니다 반면, 각 객체는을 찾고 사람이 있는지 여부를 확인하기 위해 isEqual:
메시지를 보낼 것입니다. 따라서, 당신은 indexOfObject:
을 사용할 수 있습니다 배열에 있지만 동일한 배열을 가진 객체를 찾으려면 배열에 같은 객체가 있는지 확인하십시오.
네, 척, 덕분에 NSMutableArray 클래스 참조에서 찾을 수 없습니다. – Xcoder
그래, NSMutableArray 워드 프로세서는 배열 변경과 관련된 메소드 만 포함하고있다. 수퍼 클래스 문서도 체크 아웃하는 것이 좋습니다. – Chuck
문서를 사용하면 상속 된 메소드, ivars 및 속성을 쉽게 잊어 버릴 수 있습니다. Andy Lee의 AppKiDo 앱 사본을 받으십시오. 그러면 누락 된 부분을 쉽게 볼 수 있습니다. 어떤 수업은 새로운 관점에서 볼 때 이해하기 쉽습니다. – uchuugaka