Преобразовать объект в NSDictionary - PullRequest
3 голосов
/ 20 апреля 2011

Существует ли общая реализация, которая преобразует любой объект в NSDictionary, устанавливает все имена переменных в качестве ключей и значения в качестве значений словаря?

Ответы [ 4 ]

4 голосов
/ 20 апреля 2011

Для достижения своей цели вы можете использовать Key-Value Coding.Этот протокол предоставляет механизм для установки значений свойств объекта на основе имен свойств, представленных как NSString, вместо непосредственного вызова методов доступа.

Для того, чтобы он работал, вам необходимо определить свои объекты с помощью методов доступакоторые следуют соглашениям об именах (достаточно легко, используя свойства).Вы можете увидеть руководство по протоколу NSKeyValueCoding здесь:

http://bit.ly/es6kyH

И руководство по программированию Key-Value Coding здесь:

http://bit.ly/fBY3Qa

Вывсе равно придется делать итерацию, но это хорошее начало.

3 голосов
/ 27 апреля 2011

Решено с использованием SBJSONParser, преобразовано NSObject в представление JSON и затем извлечено из него NSDictionary.

1 голос
/ 19 июня 2014

Идеальный способ сделать это, используя библиотеку для сериализации / десериализации, доступно много библиотек, но мне нравится JagPropertyConverter https://github.com/jagill/JAGPropertyConverter

, он может конвертировать ваш пользовательский объект в NSDictionary и наоборот

Предполагая

@interface Person : NSObject

@property (nonatomic, retain) NSNumber * age
@property (nonatomic, retain) NSString * address
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * cellNo;

@end

JAGPropertyConverter *converter = [[JAGPropertyConverter alloc]init];
converter.classesToConvert = [NSSet setWithObjects:[Person class], nil];

Person *person = [[Person alloc]init];
person.name = @"name";
person.address = @"address";
person.age = @27;
person.cellNo = @"XXXXXXXXXX";

//For Object to Dictionary 
NSDictionary *dictPerson = [converter convertToDictionary:person];


//For Dictionary to Object 
Person *person = [[Person alloc]init];
[converter setPropertiesOf:person fromDictionary:dictPerson];
0 голосов
/ 20 апреля 2011

Нет, у вас может быть все в вашем классе, например ссылки на другие объекты и примитивы.NS-Dictionary может сериализовать себя в NSString, а NSString может воссоздать словарь из строки.Лучше всего, если вы предоставите свои собственные методы для его сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...