2011-02-16 7 views
0

4 개의 부울 아닌 비 선택적 속성이있는 코어 데이터 엔티티가 있으며 기본값은 NO입니다. 클래스가 초기화 될 때 클래스는 엔티티 객체를 가져 오므로 NSFetchResquest의 결과가 아니며이 네 가지 속성 중 하나가 YES로 설정됩니다. 클래스는 어떤 속성이 YES인지 알아야합니다.핵심 데이터 엔티티의 속성 값 찾기

물론 중첩 된 IF/Else 문 (또는 삼항 형)을 사용하여 어느 속성이 YES인지 확인할 수 있지만 엔티티를 보는 더 좋은 (코코아 틱을 의미하는) 방법이 있는지 궁금합니다. '당신의 속성에 부울 값 YES가 있습니까?'라고 말하십시오.

또한 부울은 기본값으로 값을 가지지 않고 예를 들어 부울을 찾습니다.하지만 같은 질문을하는 것 같습니다.

답변

0

글쎄 여러 가지 가능성이 있습니다. 네 가지 부울 속성을 사용하면 깨끗한 솔루션입니다. 그런 다음 if ... elsif 문을 사용하여 발생한 문제를 찾아야합니다.

더 많이하는 방법은 함께 OR 연산하여 NSUInteger로 저장할 수있는 비트 마스크를 정의하는 것입니다. 이것이 의미 론적으로 의미가 있다면 열거 형으로 그룹화 할 수 있지만 그 것이 C 방법입니다.

NSManagedObject의 사용자 지정 하위 클래스를 정의하고 이러한 옵션을 확인하는 편리한 방법을 쓸 수도 있습니다. 그들이 무엇에 좋은지 조금씩 달려 있습니다.

+0

엔티티가 이미 NSManagedObject의 하위 클래스이므로, 확인해야 할 몇 가지 메소드를 작성한 다음 알 필요가있는 클래스의 메소드를 사용할 수 있습니다. 내 두뇌 조깅 주셔서 감사합니다! – lulu

+0

대단히 환영합니다. – GorillaPatch

0

리플렉션 (예 : class_copyPropertyListclass_getProperty)을 사용하여 클래스의 속성을 확인하고 해당 값을 조사 할 수 있습니다. 그러나 네 가지 속성 중 어느 속성이 적절한 지 이미 알았 으면 매우 까다로운 방법입니다. 나는이 접근법을 제안하지 않을 것이고, 더 추상적 인 Cocoa-ish라고 부르지 않을 것입니다.

국가의 특정 조합을 살펴 본다면 GorillaPatch의 제안이 맞다고 생각합니다. 네 개의 불린을 하나의 4 비트 정수로 변환하고 관심있는 다양한 조합을 나타내는 비트 마스크와 비교해보십시오

관련 문제