2009-07-24 1 views
1

신청서에 코어 데이터가 뒷받침되는 NSPersistantDocument을 사용하고 있습니다.핵심 데이터 문서에 문서 별 설정을 저장하는 가장 좋은 방법은 무엇입니까?

각 문서에는 해당 문서에만 관련된 여러 가지 설정이 있습니다. 예를 들어, 문서를 나중에 업데이트하려면 주소록 그룹의 고유 ID를 보유해야합니다.

내가 접근하는 방법은 다른 모델 인 DocumentSetting을 두 가지 속성으로 사용하는 것입니다. 키와 값은 NSString의 값입니다.

이상적으로는 NSUserDefaults과 유사하지만 문서 내에 저장하고 싶습니다.

이전에이 작업을 수행 한 사람이 있습니까? 이것에 접근하는 더 좋은 방법이 있습니까?

답변

4

NSPersistentStore의 setMetadata : 메서드는 문서 별 설정을 저장하는 데 사용할 수 있습니다. 상점의 메타 데이터를 사용하는 방법에 대한 문서는 here에서 확인할 수 있습니다. docs에서 권고했듯이, 거기에 넣을 수있는 것에 몇 가지 크기 제한이 있습니다. 몇 가지 키/값 쌍보다 중요한 것을 저장해야하는 경우 데이터 모델에 이러한 데이터를 저장하는 새 엔터티를 만드는 것이 좋습니다.

2

브라이언이 말했듯이 영구 저장소의 메타 데이터는 이런 종류의 일에 좋은 장소입니다. 또는 별도의 엔티티 작업을 추가하는 아이디어 (과거 두 가지 방법 모두 사용). 이 DocumentSetting 엔티티가 문서 모델의 다른 엔티티와 관계가 없으면이를 별도의 xcdatamodel에 넣고 런타임에 -[NSManagedObjectModel mergedModelFromBundles:]을 사용하여 모델을 병합 할 수 있습니다. 최소한이 방법으로 "소스"모델 파일을 조금씩 격리 할 수 ​​있습니다.

전략상 매우 많은 수의 문서 설정을 사용하거나 개별적으로 쿼리하지 않으려면 변형 가능한 속성을 사용하고 DocumentSettings 엔티티에 (보관 된) NSDictionary을 저장할 수 있습니다. 이렇게하면 기본적으로 사전과 같은 느낌을주는 NSUserDefaults API와 훨씬 비슷하게 느껴집니다.