2012-03-26 4 views
0

NSDictionary을 기반으로 "비즈니스 개체"를 만들려고합니다. 그 이유는 구현이 임의의 키를 사용하여이 객체를 확장 할 수 있기를 바라는 또 다른 이유는 편리한 plist 형식 (객체가 정수, 부동 또는 문자열)을 사용하여 유지한다는 것입니다.NSDictionary에서 지원하는 개체 만들기

비즈니스 오브젝트에는 여러 개의 사전 정의 된 특성이 있습니다 (예 :

@property NSString* customerName; 
@property NSString* productCode; 
@property int count; 
@property double unitPrice; 

나는 (, 그것은 다른 사용하기 쉬운 형식이 될 수 이것은 엄격한 요구 사항이 아닙니다) 속성 목록에 예를 들어,이 직렬화합니다. 클래스의 구현은 위 예의 경우 단지

@synthesize customerName, productCode, count, unitPrice: 

이어야합니다. 이 클래스를 사용하려면 다음과 같이하고 싶습니다.

MyBusinessObject* obj = [MyBusinessObject businessObjectWithContentsOfFile:fileName]; 
obj.productCode = @"Example"; 
[obj setObject:@"Some data" forKey:@"AnExtendedProperty"]; 
[obj writeToFile:fileName atomically:YES]; 

답변

0

은 "최소 저항의 경로를 「대신 NSCoding를 사용하는 것으로 밝혀졌다.

2

클래스 KVC 불만 사항을 작성해야합니다. KVC는 마술을합니다. Look here.Ex,

// assume inputValues contains values we want to 
// set on the person 

NSDictionary * inputValues; 
YOURCLASS * person = [[YOURCLASS alloc] init]; 

[person setValuesForKeysWithDictionary: inputValues]; 
+0

좋은 지적! 저의 수업에는 초보적인 KVC 준수 (검증 등 없음)가 있습니다. 그러나 나는 어떻게 거기에서 그리고 plist에서 가야합니까? 나는 그것이 나의 질문의 핵심이라고 생각한다. 편집 : plist에서 *가는 것이 더 어렵다고 생각하지만,이 경우에는 필요하지 않습니다. – Krumelur

+0

@Krumelur. 편집 됨. – Vignesh

+0

고맙습니다. 내 질문을 잘 업데이 트 :) – Krumelur