如何获取NSObject属性名和属性值的字典
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。
千家信息网最后更新 2025年02月02日如何获取NSObject属性名和属性值的字典
最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。另一种方案就是应用层将自定义对象转换成属性名和属性值的字典后再交由SBJSON处理。鉴于本次SBJSON由一个底层库维护,折中方案就是在应用层进行自定义对象的处理。经过一番调查和搜索后,发现如下的实现方法:
- #import <Foundation/Foundation.h>
- #import <objc/runtime.h>
- @interface NSObject (PropertyListing)
- // aps suffix to avoid namespace collsion
- // ...for Andrew Paul Sardone
- - (NSDictionary *)properties_aps;
- @end
- @implementation NSObject (PropertyListing)
- - (NSDictionary *)properties_aps {
- NSMutableDictionary *props = [NSMutableDictionary dictionary];
- unsigned int outCount, i;
- objc_property_t *properties = class_copyPropertyList([self class], &outCount);
- for (i = 0; i < outCount; i++) {
- objc_property_t property = properties[i];
- NSString *propertyName = [[[NSString alloc] initWithCString:property_getName(property)] autorelease];
- id propertyValue = [self valueForKey:(NSString *)propertyName];
- if (propertyValue) [props setObject:propertyValue forKey:propertyName];
- }
- free(properties);
- return props;
- }
- @end
利用一些JSON框架进行自定义对象传输时处理如下:
- // The Person class has `firstName` and `lastName`
- // properties.
- // andrew is a Person instance with NSString values
- // of "Andrew" and "Sardone" for `firstName` and
- // `lastName` respectively.
- NSString *jsonString = [[andrew properties_aps]
- JSONRepresentation];
- // now `jsonString` looks like:
- // { "firstName": "Andrew", "lastName": "Sardone" }
代码链接: http://forrst.com/posts/Getting_a_dictionary_of_an_NSObjects_property_n-h3T
对象
方案
处理
属性
就是
应用层
方法
框架
应用
支持
字典
为此
代码
底层
过程
链接
传输
开发
折中
搜索
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界琉璃斗罗服务器群
密码编码与网络安全第五版
数据库快速导出dbf
承德软件开发商家
幼儿园网络安全工作组织机构
数据库安装提示指定的实例
央行软件开发商
数据库领域论文
软件安装后数据库在哪里找
软件开发各阶段的任务是什么
网络安全宣传海报设计理念
无线宽带网络技术包括
网络安全法侵犯公民
河南网络软件开发资格
两会审议网络安全
呼和浩特网络安全吗
维普数据库运算顺序
护苗网络安全活动小结
广东佳俊网络技术
智能药房软件开发方案
网络安全横批
即时通信软件开发开题报告
网络安全人人有责手抄报文字
数据库全备
软件开发技术学院风包包
a站的服务器
科技网 互联网电视
网络安全专业近几年考研分数线
魔兽世界服务器价格
永恒之塔服务器哪个好