2009-10-26 5 views
3

최근 Objective-C에서 프로그래밍의 길을 시작했습니다. 이제 핵심 데이터를 살펴보고 있습니다. 그러나 핵심 데이터에서 모델 자체를 정의하는 것이 무엇인지 정확히 혼란 스럽습니다.코어 데이터 클래스 vs 모델

다음은 의미하는 바입니다. 그래픽 모델 빌더를 사용하여 일부 속성 세트로 엔티티를 생성한다고합시다. 그런 다음 Xcode에서 해당 클래스에 대한 코드를 생성합니다. 다음으로, 런타임 중에 만 사용되며 핵심 데이터에 의해 저장되거나 검색 될 필요가없는 클래스에서 속성을 만들고 싶습니다. 따라서 변수와 해당 속성을 클래스에 추가합니다 (구현시 합성).

새 속성은 모델 작성기에 정의되어 있지 않지만 NSManagedObject에서 파생 된 클래스에 정의되어 있습니다. 핵심 데이터에서 어떻게 처리됩니까? 클래스에 나열된 속성이 "모델"의 속성을 정의합니까? 아니면 모델 작성기에 정의 된 속성 만 모델을 정의합니까?

마찬가지로 클래스 파일에 enum 기반 속성을 추가하여 모델에서 NSNumber 특성에 액세스하거나 변경할 때 가져 오거나 설정해야합니다. 핵심 데이터없이 속성을 저장 및 검색 할 속성으로 처리 할 수 ​​있습니까?

고맙습니다!

답변

6

다른 클래스처럼 NSManagedObjects에 대해 생성 된 코드에 사용자 지정 속성 (및 변수)을 추가 할 수 있습니다. 이것들은 모델의 일부가되지는 않지만, 일시적으로 메모리에 저장됩니다. 관리 객체가 dealloc 될 것이라면 메모리의 값도 역시 중요하다는 점은 주목할 가치가 있습니다.

팁 기본 데이터에 대한 사용자 지정 액세서를 구현하는 경우 해당 관리되는 개체에 범주를 만드는 것이 좋습니다. 접근 자에서 기본 NSNumber에 액세스하여 범주의 머리글에 정의 된 열거 형으로 변환합니다.

모델이 변경되었다고 말하기 때문에 관리 객체의 코드를 다시 생성해야하는 경우 추가 한 사용자 정의 코드와 병합하지 않고 관리 객체에 대해 생성 된 클래스를 삭제하고 다시 생성하면됩니다. 추가 한 카테고리는 기본 저장 프로퍼티가 동일하게 유지되는 한 동일하게 작동합니다.

Objective-C Programming Language guide의 카테고리에 대한 자세한 내용은 ADC에서 확인할 수 있습니다.

관련 문제