귀하의 질문에 혼란이 있습니다. 분명히 XML 파일에서 데이터를 가져 와서 구문 분석하고, 배열을 만들고, 모든 작업을 시간 계획에 따라 수행 할 수 있지만 두 항목을 비교하는 방법을 알지 못하는 응용 프로그램을 작성 했습니까? 내가 너의 질문을 오해 한 것 같아! 그래서 여기 추측은, 어쩌면 도움이 될 것입니다
코코아는 객체의 평등에 대한 패턴이 -이 개 객체 인스턴스가 "동일한"여부를 테스트하는 표준화 된 방법을 제공하는 두 가지 방법 isEqual:
함께 hash
일을, 어떤 그것은 객체가 나타내는 것의 관점에서 의미합니다.
이 방법은 모든 표준 클래스에서 제공하는, 그래서 두 NSString
인스턴스 컬렉션 클래스의 경우 동일한 문자열 등을 나타냅니다 여부를 NSArray
의 isEqual:
방법은 자신의 isEqual:
를 호출하여 쌍으로 두 배열의 요소를 비교하여 같은 테스트 할 수 있습니다 메소드 등.
기본 클래스 인 NSObject
이 기본 구현을 제공하지만 특정 클래스에 대한 동일성의 의미를 알 수 없으므로 구현이 매우 기본입니다. 두 객체는 정확하게 동일한 객체 인 경우에만 동일합니다 즉 [a isEqual:a]
은 YES
이고 다른 것은 없습니다.
그래서 당신은 제공해야 isEqual:
및 (이 중요하다) 클래스에 대한 평등이 무엇인지 구현 클래스에 대한 hash
쌍 - 아마 그것의 속성 중 일부의 측면에서 정의 등 name
으로, 당신은 언급하고 그들의 isEqual:
메소드를 호출 할 것입니다. 물론
이 클래스의 평등은 단순히 isEqual:
& hash
구현 name
과 같은 속성 중 하나를 기반으로하는 경우 하찮은이다 - 구현은 단지 해당 속성에서 동일한 메소드를 호출. 이 경우에는 직접 쌍을 구현할 필요가 없으며 직접 속성을 비교할 수 있습니다.뭔가 같은 :
NSUInteger indexOfInterest = ...;
MyClass *objectA = arrayA[indexOfInterest];
MyClass *objectB = arrayB[indexOfInterest];
BOOL itemsAreEqual = [objectA.name isEqual:objectB.name];
재산 그때 당신은 표준 항등 연산자 사용과 같은 int
개체 유형하지만 일부 원시 형이 아닌 경우 :
BOOL itemsAreEqual = objectA.name == objectB.name;
읽기 : Object Comparison 애플의 코코아에서을 핵심 역량.
출처
2014-03-03 19:42:19
CRD
현재 코드는 어떤 모양이며 어떤 문제점이 있습니까? – admdrew
나는 현재 코드가 없기 때문에 색인에있는 객체를 비교할 필요가있다. 어떻게 해야할지 모른다. 단서가 없다. – user3371091
자신이 뭔가를 시도해 본 후에도 여전히 문제가 있다면, 다시 돌아 가자! – admdrew