2012-05-27 8 views
2

EntityA에는 선택 속성 인 int32 result이 있습니다. EntityA을 만들 때 result 속성을 설정하지 않습니다. 그렇다면 나중에 가져올 때 nil 값을 가질 것이라고 기대하지만 어떤 이유로이 속성을 설정하지 않았더라도 3으로 설정됩니다.핵심 데이터 - 선택적 속성이있는 객체 가져 오기

여기 무슨 일 이니?

답변

3

1 가능한 문제 : 당신은 모델 편집기에서 기본 값을 설정 한
. 속성을 선택하고 속성을 확인하십시오.

2 가능한 문제 :
당신은 검색 또는 잘못된 값을 보여주고있다. 결과를 '3'으로 찾으려면 사용중인 코드를 표시하십시오.

3 가능한 문제 :
당신은 아마 루프 또는 이와 유사한에서 나중에 실수로 값을 설정합니다. 속성에서 텍스트 검색을 수행하여 코드에서 가능한 항목을 찾으십시오.

+0

좋습니다. 기본값으로 나를 구할 수 있습니다. 감사! –

0

int32는 NSNumber 객체로 랩핑되어 저장됩니다. 값을 제공하지 않으면 NSNumber 객체가 생성되지 않습니다. sql은이 객체를 NULL로 처리합니다.

아이폰 OS 코어 데이터 프로그래밍 가이드

는 말한다 :

당신은 속성이 IS-그 선택 사항입니다 지정할 수 있습니다, 그것은 값을 가질 필요 없습니다. 그러나 일반적으로 숫자 값에 대해서는 을 사용하지 않는 것이 좋습니다. 일반적으로 모델 0의 기본값이있는 필수 속성을 사용하면 결과가 더 좋습니다. 그 이유는 SQL에 Objective-C의 nil과 다른 특수 비교 NULL에 대한 동작이 있기 때문입니다. 데이터베이스의 NULL 은 0과 같지 않으며 0을 검색하면 NULL이있는 열과 일치하지 않습니다.

그래서, 속성이 의무화와 별개의 값으로 설정하거나, 처음부터의 NSNumber에 전달하는 하나 더 좋을 수 있습니다.

관련 문제