如何获取NSObject属性名和属性值的字典
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,最近在利用SBJSON开发的过程中,发现SBJSON无法支持自定义的对象,为此考虑到了两种实现方案。一种在SBJSON框架一层实现一个自定义对象的Category以支持proxyForJson的方法。
千家信息网最后更新 2024年11月14日如何获取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安全错误
数据库的锁怎样保障安全
jsp 显示数据库图片
雷达对抗情报数据库设计
广东聊天软件开发常见问题
5g网络技术作用
网络安全里的信息安全包括
软件开发 税收分类
软件开发利用公司资源
学数据库系统原理的作用
数据库历史数据表
如何创建数据库服务器地址
梦幻可转服务器多久可以轮换
网络安全正版化
lol怎么设置代理服务器
我的世界1.8.0服务器
用于互联网的数据库
有数据库怎么变现
消防站网络安全形势分析
开展国家网络安全宣传
西安软惠软件开发
数据库主键和外键例子
软件开发利润过低
服务器半导体设计
数据库 读写工具
下载数据库的工具
毕设英语填词软件开发
德甲球队数据库
战地1官方服务器都在哪儿
用友数据库备份
阿里云如何上传数据库
s71200数据库块嵌套