美文网首页
[转]如何获取NSObject属性名和属性值的字典

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

作者: LV大树 | 来源:发表于2016-08-13 16:22 被阅读218次

如何获取NSObject属性名和属性值的字典
2011-03-03 12:04:06
标签:JSON 自定义对象 休闲 职场

最近在利用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-h2T

相关文章

  • [转]如何获取NSObject属性名和属性值的字典

    如何获取NSObject属性名和属性值的字典2011-03-03 12:04:06标签:JSON 自定义对象 休闲...

  • jQuery 样式篇

    attr("attrName") 获取属性的值 attr(属性名, 属性值): 设置属性的值 attr(属性名,函...

  • KVC(NSKeyValueCoding):

    setValue:属性值 forKey:属性名: 为指定属性设置值 valueForKey:属性名: 获取指定属性...

  • Runtime(五) 实战

    实战一: 数据转模型 目标: 数据转模型考验知识点: 获取属性列表, 关联属性, 字典转模型 1, 获取类的属性列...

  • AppleScript-record对象

    理解类似于OC中的字典,js中的对象 创建 获取属性the 属性名 of 对象 设置属性 获取属性数量

  • 16、jQuery 对属性的操作

    attr(): attr(属性名):获取属性 attr(属性名,属性值):修改或添加属性 removeAttr(属...

  • 详解Java如何获取对象属性及对应值

    利用反射获取对象的所有属性及对应的值 1、获取属性名数组 2、根据属性名获取属性值 3、获取属性的数据类型 4、完...

  • Runtime 的一些用法

    一. 字典转模型 利用Runtime遍历所有的属性或者成员变量利用KVC设值 二. 设置和获取成员变量的值 obj...

  • iOS NSMutableAttributedString富文本

    属性及说明 富文本段落排版格式属性说明 示例 代码示例 字典中存放一些属性名和属性值 添加属性 删除属性

  • 3初识JavaScript

    HTML 的属性操作:读、写 属性名属性值读操作:获取、找到元素.属性名写操作:“添加”、替换、修改元素.属性名 ...

网友评论

      本文标题: [转]如何获取NSObject属性名和属性值的字典

      本文链接:https://www.haomeiwen.com/subject/lqtysttx.html