2012-10-21 3 views
1

내 핵심 데이터 하위 클래스 중 하나는 NSSetitems입니다. 자주 NSOrderedSet) 대신 주문한 NSArray을 가져 오는 것이 유용하기 때문에 정렬 할 클래스에 orderedItems을 추가했습니다.코어 데이터, iVars 및 카테고리

그런 다음 성능 문제가 발생하여 orderedItems을 캐싱하려고 결정했습니다. 내 계획은 null이 아닌 경우 반환 할 iVar 인 클래스에 _cachedOrderedItems을 사용하는 것입니다.

내게는 범주를 사용합니다. 필요하다면 핵심 데이터 클래스를 다시 생성하고 모든 사용자 정의를 잃지 않도록 모든 사용자 정의 코드를 범주에 넣는 것에 대한 좋은 조언을 읽습니다. 이러한 사용자 지정 중 하나는 orderedItems 메서드입니다.

카테고리 자체에 iVar을 선언 할 수없는 것 같습니다. 대신 핵심 데이터 클래스에 넣으려고하면 해당 범주에서 액세스 할 수 없습니다.

커스텀 코드를 다시 코어 데이터 클래스로 옮겨야합니까? 또는 나는 무엇인가 놓치고 있냐?

나는 Mogenerator에 대해서도 들었으며, 도움이된다면 이것을 사용하는 법을 배웠다.

+1

그리고 어쩌면 내가 사용자 정의 코드에 대한 카테고리가 아닌 서브 클래스를 사용해야합니까? –

답변

1

클래스를 소유하고 있으므로 클래스 대신 클래스 연속 (here)을 사용할 수 있습니다. 이렇게하면 인스턴스 변수를 추가 할 수 있습니다.

0

반드시 mogenerator를 사용해야합니다. 예를 들어 http://importantshock.wordpress.com/2006/12/19/mogenerator-or-how-i-nearly-abandoned-core-data/을 참조하십시오.

은 다음으로 스크립트 실행을 추가, 엑스 코드에서 집계 대상을 만들 수 있습니다

mogenerator -m path/to/your/datamodel.xcdatamodeld/version.xcdatamodel --template-var arc=true -M /CoreData/Generated -H /CoreData 

을 모든 NSManagedObject 당신은 클래스와 서브 클래스를 얻을. 데이터 모델을 업데이트 할 때 스크립트를 다시 실행하면 관리 대상 객체 하위 클래스에 대한 모든 변경 사항을 유지하면서 기본 클래스가 업데이트됩니다. 호가없는 경우 --template-var arc=true을 제거하십시오.