2014-01-14 4 views
-4

나는 2 개의 가변 배열에 저장하고있는 모델 클래스 (서브 클래스는 NSObject)를 가지고있다. 한 배열에서 객체를 직접 저장하고 다른 객체에서는 [myObject copy]을 사용하여 객체의 복사본을 저장합니다. 필자는 포인터가 저장되어있는 주소를 무시하여이 두 배열을 비교하려고합니다. 개체가 일치하면 YES을 반환해야합니다.포인터를 무시하고 NSObjects를 비교

나는 isEqualToArray을 사용해 보았지만 포인터를 비교하기 때문에 NSObject 하위 클래스에서 작동하지 않습니다.

이 문제에 대한 제안이나 해결 방법을 알려주세요.

- (BOOL)isEqual:(id)object 
- (NSUInteger)hash 

예를 들어, 당신은 ISEQUAL 방법으로 원하는 로직을 추가합니다 :

+1

이전 질문에 대한 올바른 대답을 이미 가지고있는 것으로 보입니다. http://stackoverflow.com/questions/21109077/mutable-array-comparison-for-copied-objects. –

+0

심지어 많은 답변이 이미 Google에 있습니다. –

답변

1

당신은 NSObject의의 하위 클래스에서이 메소드를 오버라이드 (override) 할 필요가

- (BOOL)isEqual:(id)object 
{ 
    MyObject *obj = (MyObject*)object; 
    if ([self.name isEqualToString obj.name]) 
     return YES; 
    else 
     return NO; 
} 

많은 예는 온라인이 있습니다. 그 후에 당신은 당신의 객체를 비교할 수있는 isEqual을 사용할 수 있습니다. 도움이 되길 바랍니다.

+0

이러한 메서드를 재정의하면 Java가 떠오른다. 나는이 점에서 두 언어 사이에 간접적 인 역사적 연관성이 있는지 궁금하다. – Unheilig