如何获取NSObject属性名和属性值的字典
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。
千家信息网最后更新 2025年12月01日如何获取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安全错误
数据库的锁怎样保障安全
网络安全 孵化器
计算机网络技术第三版笔记
萌猪辅助导入服务器
数据库启用服务的命令是什么
慧加软件开发
建立顾客数据库的特征
烟草 网络安全保密管理制度
厦门哪个软件开发培训好
计算机三级网络技术裸考
万兴科技移动互联网
计算机网络技术发展历程图
图像识别服务器
如何修改数据库登陆密码
定制操作系统云服务器
忠煜网络技术
华为数据库与科蓝软件
软件开发方面的项目
苏州前端软件开发定制费用
网络安全 队伍建设
广州鲜京网络技术
网络安全 孵化器
广东综合软件开发均价
5g网络安全工程师到底是啥
福建京科通达网络技术
国内服务器厂安全吗
怎么识别网络技术
数据库中允许为空的字段
http 代理服务器实现
中国联通黄冈分公司网络安全事故
怎么做服务器我的世界