Создание объектов с поддержкой NSDictionary - PullRequest
0 голосов
/ 26 марта 2012

Я хочу создать «бизнес-объект» на основе NSDictionary.Причина этого заключается в том, что я хочу, чтобы реализации могли расширять этот объект произвольными ключами, а другая причина заключается в том, что я сохраняю его, используя удобный формат plist (сохраненные объекты представляют собой целые числа, числа с плавающей запятой или строки).

Бизнес-объект содержит ряд предопределенных свойств, например,

@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];

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Вы должны подать жалобу в KVC.KVC делает волшебство. Смотри здесь.Ex,

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

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

[person setValuesForKeysWithDictionary: inputValues];
0 голосов
/ 09 апреля 2012

Оказалось, что "путь наименьшего сопротивления" использует NSCoding.

...