2010-08-03 6 views
8

을 성능 :코어 데이터 - 선택 속성과는 코어 데이터 프로그래밍 가이드 당

당신은 속성이 은 선택 - 즉,이 값을 가지고 필요하지 않습니다 것을 지정할 수 있습니다. 그러나 일반적으로 을 수행하는 것이 좋습니다. 특히 숫자 값이 인 경우 (일반적으로 기본값과 함께 필수 속성 인 -0의 필수 속성을 사용하여 더 나은 결과를 얻을 수 있습니다). 이유는 Objective-C의 nil과 달리 NULL 에 대한 SQL의 특수 비교 동작이 있다는 것입니다. 데이터베이스에있는 NULL 은 0, 과 같지 않으며 0을 검색하면 NULL이있는 열과 일치하지 않습니다.

저는 항상 숫자가 아닌 값을 만들었지 만 날짜와 문자열은 가지고 있지 않습니다. 내 코드에서 날짜 및/또는 문자열이 nil 인 논리를 기반으로하는 것이 편리합니다.

위의 권장 사항을 기반으로 데이터베이스의 모든 항목을 선택 사항으로 만드는 것을 고려하고 있습니다. 날짜의 경우 모델의 기본값을 0으로 설정하고 문자열의 경우 모델 기본값을 아무 것도 ("")로 설정할 수 있습니다. 그런 다음 내 코드에서 [dateTimeIntervalSince1970]! = 0 날짜 및 string.length! = 0 문자열을 테스트 할 수 있습니다.

질문은 상대적으로 작은 데이터베이스의 경우 핵심 데이터 성능 점? 그리고 문제의 속성이 술어를 통해 직접 질의되지 않는다면 어떻게 되겠습니까?

답변

10

중소 규모 데이터 세트에서 성능 문제가 발생하지 않았습니다. 나는 이것이 당신이 당신의 응용 프로그램의 공연 단계에서 다루는 것임을 의심합니다.

개인적으로 필자는 코드를 더 쉽게 만들면서 나중에 최적화 할 시간이 더 많아지기 때문에 개인적으로는 비상 한 논리적 논리가 선택적인 것으로 선택했다.

+0

고마워요. 마커스! 나는 네가 이것을 대답하기를 희망했다. 공인 된 Core Data 닌자 (coin data ninja)를 통해 나에게이 이슈를 남길 수있는 자신감을 가질 수 있습니다. – thevoid

+6

마커스가 정말로 핵심 데이터 닌자라면 우리는 그가 결코 우리를 보지 않을 것입니다 ... 그것이 그가 우리가 생각하기를 바라는 것이 아니면. 닌자는 까다로운 악마입니다. – TechZen