평등

2013-03-08 2 views
0

속성 방법이 NSMutableSets가 (회원 같은 수의 같은 멤버) 동일한 경우 확인합니까?평등

내 구현 isEqualToSet이 작동하지 않는 것 같습니다.

// members is a NSMutableSet of AUser objects 

// users is also a NSMutableSet of AUser objects, it is an attribute of instances of the AGroup class 

[[group valueForKey:@"users"] isEqualToSet:members] 


AGroup 
- users 

AUser 
- name (String) 

이름 속성을 확인하여 세트가 동일한 지 어떻게 확인합니까?

내 지식이 부족해서 죄송합니다. iOS 프로그래밍을 처음 시작한 순간이므로 지금은 기본 정보 만 알고 있습니다. 검사 할 경우 해당 name 속성이 동일한 경우

+2

isEqualToSet :'작동해야합니다. 어쩌면 세트에있는 물체의 문제 일 수도 있습니다. 그들은'isEqual :'과'hash'를 구현해야합니다 –

+0

당신의 세트의 내용은 무엇입니까? 문자열이나 숫자 또는 다른 것들? "isEqualToSet'"은 집합의 객체 주소 만보고 평등을 결정할 수 있습니다. 그러나 위의 설명을 보면 어쩌면 특정 유형의 객체의 내용을보고있을 수도 있습니다. –

+0

오케이. 문제를 이해해 주셔서 감사합니다. 나는 무엇이 잘못되었는지 질문에 대한 업데이트를 게시 할 것이다. 세트의 객체는 맞춤 클래스의 두 인스턴스이며, 속성을 확인하는 방법을 모르지만 String 속성이 있습니다. – GangstaGraham

답변

2

다음 작업을해야합니다 :

[[group valueForKeyPath:@"users.name"] isEqualToSet:[members valueForKey:@"name"]] 

[group valueForKeyPath:@"users.name"][members valueForKey:@"name"] 반환의 집합을 그룹의 모든 사용자의 이름의 집합을 반환하고, members 세트의 모든 사용자 이름

업데이트 : 의견에서 분명 해졌 듯이 members은 일련의 문자열이며 사용자 개체 집합이 아닙니다. 따라서 코드는 다음과 같이 단순화됩니다.

[[group valueForKeyPath:@"users.name"] isEqualToSet:members] 
+0

첫째로, @ 마틴 당신은 선생님입니다! 도와 주셔서 감사 드리며 SO 커뮤니티를 도와 주셔서 감사합니다. 나는 전형적인 코드에 대해 체크 마크와 upvote를 줄 것이지만, 불행히도 나의 noobish 코드는 조금 이상하다. '[<__ NSCFString 0xa268260> valueForUndefinedKey :] :이 클래스는 키 이름을 코딩하는 키 값이 아닙니다. "위에서 제안한대로 isEqual : 및 hash를 구현해야하는 것처럼 보입니다. – GangstaGraham

+1

@GangstaGraham : 'members'가 문자열 집합이며 사용자 객체 집합이 아닌 것처럼 들립니다. '[[value value] 그룹 : isEqualToSet : members.name']을보십시오. –

+0

우후 !!!!! @ 마틴 그 일했다. 예, 방금 회원들이 실제로 코드 집합을보고 문자열을 찾은 것을 기억합니다. 맞습니다. 잘 했어. 내가 할 수만 있다면 나는이 대답을 두배로 줄 것이다. 다시 한번 감사합니다. :) – GangstaGraham