是否有任何通用的实现将任何对象转换为NSDictionary,将所有变量名称设置为键和值作为字典值?将对象转换为NSDictionary
回答
使用SBJSONParser求解,将NSObject转换为JSON表示形式,然后将NSDictionary从中提取出来。
你可以告诉我一个例子,我试图将一个NSobject转换为json,发现没有好的例子可以让你给我一个链接? – Radu 2011-07-27 12:43:34
http://code.google.com/p/json-framework/source/browse/trunk/Source/NSObject%2BSBJSON.m?r=532 – 2011-07-28 04:13:11
如果你使用JSONKit,你会做NSDictionary * deserializedData = [jsonString objectFromJSONString ]。 – loretoparisi 2012-07-14 00:29:57
不,你可以在你的课堂中拥有一切,例如对其他对象和原语的引用。 NS-Dictionary可以将自己序列化为NSString,NSString可以从字符串重新创建字典。最好将你提供你自己的方法来序列化它。
为了实现您的目标,您可以使用键值编码。此协议提供了一种机制,可根据以NSString表示的属性名称来设置对象属性的值,而不是直接调用访问器。
为了使其工作,您需要使用遵循命名约定的访问器定义对象(使用属性足够简单)。你可以看到的NSKeyValueCoding协议莅临指导:
和键 - 值编码编程指南这里:
你还要做迭代,但它是一个好的开始。
做到这一点的最佳方法是使用一个库序列化/反序列化 许多图书馆也有,但我喜欢的是 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];
- 1. 如何将NSDictionary转换为JSON对象?
- 2. 将NSDictionary对象转换为自定义复杂对象
- 3. 将NSDictionary对象转换为NSData对象,反之亦然
- 4. 转换一个NSDictionary对象到对象
- 5. 将NSDictionary字符串转换为NSDictionary
- 6. 将NSObject转换为NSDictionary
- 7. 将NSArray转换为NSDictionary
- 8. 将NSDictionary转换为XML
- 9. 将NSDictionary转换为std :: vector
- 10. 将NSDictionary转换为NSString
- 11. 将NSDictionary转换为UITableView
- 12. 将NSDictionary转换为JSON
- 13. 将NSDictionary转换为NSArray
- 14. 将NSData转换为NSDictionary
- 15. 将nsdictionary转换为nsdata
- 16. 将NSDictionary值转换为NSString
- 17. 将NSString转换为NSDictionary
- 18. 如何使用JavaScriptCore将JavaScript对象转换为NSDictionary
- 19. 如何将一个类对象转换为一个NSDictionary?
- 20. 如何利用NSCoding将对象转换为NSDictionary?
- 21. AFNetworking GET请求 - 无法将响应对象转换为NSDictionary
- 22. 将NSData对象转换为NSDictionary的问题
- 23. 将包含NSDictionary对象的NSArray转换为IOS中的单个NSDictionary
- 24. 将对象转换为xml
- 25. 将对象转换为KeyValuePair
- 26. 将对象转换为CLOB
- 27. 将DataTable转换为对象[,]
- 28. 将对象转换为DateRange
- 29. 将流转换为对象?
- 30. 将对象转换为NameValueCollection
看到这个答案将对象转换为NSDictionary的 [转换物体插入的NSDictionary] [1] [1]:http://stackoverflow.com/a/12890495/600076 – iHS 2012-10-15 06:53:27
这是最好的动态的方式,我发现http://stackoverflow.com/questions/ 10318366/obj-c-easy-method-to-convert-from-nsobject-with-properties-to-nsdictionary#10318659 – 2013-03-31 13:29:43