千家信息网

如何获取NSObject属性名和属性值的字典

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。
千家信息网最后更新 2026年11月01日如何获取NSObject属性名和属性值的字典


最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。另一种方案就是应用层将自定义对象转换成属性名和属性值的字典后再交由SBJSON处理。鉴于本次SBJSON由一个底层库维护,折中方案就是在应用层进行自定义对象的处理。经过一番调查和搜索后,发现如下的实现方法:

  1. #import <Foundation/Foundation.h>
  2. #import <objc/runtime.h>
  3. @interface NSObject (PropertyListing)
  4. // aps suffix to avoid namespace collsion
  5. // ...for Andrew Paul Sardone
  6. - (NSDictionary *)properties_aps;
  7. @end
  8. @implementation NSObject (PropertyListing)
  9. - (NSDictionary *)properties_aps {
  10. NSMutableDictionary *props = [NSMutableDictionary dictionary];
  11. unsigned int outCount, i;
  12. objc_property_t *properties = class_copyPropertyList([self class], &outCount);
  13. for (i = 0; i < outCount; i++) {
  14. objc_property_t property = properties[i];
  15. NSString *propertyName = [[[NSString alloc] initWithCString:property_getName(property)] autorelease];
  16. id propertyValue = [self valueForKey:(NSString *)propertyName];
  17. if (propertyValue) [props setObject:propertyValue forKey:propertyName];
  18. }
  19. free(properties);
  20. return props;
  21. }
  22. @end

利用一些JSON框架进行自定义对象传输时处理如下:

  1. // The Person class has `firstName` and `lastName`
  2. // properties.
  3. // andrew is a Person instance with NSString values
  4. // of "Andrew" and "Sardone" for `firstName` and
  5. // `lastName` respectively.
  6. NSString *jsonString = [[andrew properties_aps]
  7. JSONRepresentation];
  8. // now `jsonString` looks like:
  9. // { "firstName": "Andrew", "lastName": "Sardone" }

代码链接: http://forrst.com/posts/Getting_a_dictionary_of_an_NSObjects_property_n-h3T

对象 方案 处理 属性 就是 应用层 方法 框架 应用 支持 字典 为此 代码 底层 过程 链接 传输 开发 折中 搜索 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 博彦科技互联网金融 新华互联网科技 金融科技创新监管互联网金融 以房互联网科技 互联网金融科技平台 西安互联网科技公司 广州凡科互联网科技 深圳卡尔迅互联网科技有限公司怎么样 汽车互联网创新科技园 宁夏众和广鑫互联网科技有限公司 荆州市昕露互联网络科技有限公司 互联网科技研发水平 工业互联网等科技实现智能化赋能 群盈汇互联网科技有限公司 风投北京互联网科技 下一代互联网重大应用科技园 玉溪新华互联网科技怎么选 利用互联网等科技手段 互联网科技企业文化 南京欣网互联网络科技 互联网和科技技术 深圳恒合互联网络科技有限公司 电子科技大学互联网 互联网科技有限公司 翻译 富国互联网科技创新基金 济南华为互联网科技产业总部基地 互联网与医疗科技 富国互联网科技002692 国产互联网科技公司
0