2010-11-18 5 views
3

핵심 데이터에 BOOL이 있습니다. YES 또는 NO로 설정하지 않으면 값이 null이되고 싶습니다. 가능합니까? 내 코드에서 값이 아직 설정되지 않았는지 확인하려면 어떻게해야합니까?iPhone - Core Data Bool 값은 무엇입니까?

내 nsmanagedObject에서 내 BOOL에 NSNumber를 사용합니다. 핵심 데이터 mdoel에는 BOOL이 있습니다.

답변

5

CoreData를 사용하면 기본값을 설정할 수 있습니다. Bool에는 "YES", "NO", "None"이 포함될 수 있습니다. 기본값을 "None"으로 설정하면 반환 값 "null"이 만들어지며 이는 정확히 필요한 것입니다.

+0

이것은 내가 생각하고 있던 것입니다. 제 경우에는 hasChildren 속성을 가진 노드가 있습니다. None이라면 그 노드에 자식 노드가 있는지를 확인하기 위해 서버에 질의 할 필요가 있음을 의미합니다. 예와 아니오는 자식 노드가 있는지 없는지를 확실히 알 수 있습니다. – Sushant

3

모델의 속성 유형으로 부울을 설정하면 이는 NSNumber을 사용하여 구현됨을 의미합니다.

NO 대신 값을 반환하지 않는 이유가 확실하지 않지만 실제로는 권장하지 않습니다. 거짓 기본값을 설정 한 경우 데이터 무결성이 훨씬 더 쉬워집니다.

그러나 사용자가 절대적으로 주장하는 경우 속성이 nil인지 여부 만 확인하거나 값이 아직 지정되지 않았는지 확인할 수 있습니다.

+4

많은 사용 사례에서 NO와 "설정되지 않음"사이에는 차이가 있습니다. –

+1

차이가 있다는 것을 알고 있습니다. 나는 전에 거기에 있었고 무결성 문제를 도입 할 의무가 있습니다. 나는 -1, 0, 또는 1 인 정수를 사용하는 것과 같은 더 좋은 방법이 있다고 생각한다. –

+1

나는 동의한다. -1, 0 및 1은 더 나은 해결책입니다. – griotspeak

0

정답은 '예'이며 '예' '아니요'와 다른 '없음'을 사용하면 데이터가 손상되지 않았 음을 의미합니다. 핵심 데이터에는 때때로 '없음'과 비교하여 검사할만한 이유가 있습니다. 특히 데이터베이스를 디버깅하려는 경우에 유용합니다. 핵심 데이터에서 다음을 사용할 수 있습니다.

[myManagedObject setValue: nil forKey:@"attributeOfMyManagedObject"]; 

기본 데이터 설정을 사용하는 경우 핵심 데이터 뒤에 SQL 데이터베이스를 확인하면 'NULL'이 표시됩니다.

관련 문제