IOS 自定义类型转换为Dictionary

IOS 自定义model如果要转换位json与服务器进行交互的时候,我把model数据类型先转换为了dictionary然后在进行json序列化。

#import <objc/runtime.h>

@implementation ConvertToCustomClass
+ (NSMutableArray *)convertCustomClassToDictionary:(NSMutableArray *)array{
    NSMutableArray *customArray = [NSMutableArray array];
    for (id customClass in array) {
        NSString *className = NSStringFromClass([customClass class]);//获取类名
        const char *cClassName = [className UTF8String];//类名编码方式
        id theClass = objc_getClass(cClassName);//获取当前类类型
        unsigned int outCount, i;
     
        //获取该类的所有属性
        objc_property_t *properties = class_copyPropertyList(theClass, &outCount);
        NSMutableArray *propertyNames = [[NSMutableArray alloc] initWithCapacity:1];
        for (i = 0; i < outCount; i++) {
            objc_property_t property = properties[i];
             //property_getName()返回属性的名字
            NSString *propertyNameString = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
            [propertyNames addObject:propertyNameString];
            //property_getAttributes()返回属性的属性
            NSLog(@"%s %s\n", property_getName(property), property_getAttributes(property));
        }
        NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] initWithCapacity:1];
        for(NSString *key in propertyNames)
        {
            SEL mySel = NSSelectorFromString(key);
            id value = [customClass performSelector:mySel];
            if (value == nil)
            {
                value = [NSNull null];
            }
            [finalDict setObject:value forKey:key];
            NSLog(@"%@     %@\n", value, key);
        }
        [customArray addObject:finalDict];
    }
    return customArray;

}

@end

时间: 2024-08-06 08:59:06

IOS 自定义类型转换为Dictionary的相关文章

EF将IEnumerable&lt;T&gt;类型转换为Dictionary&lt;T,T&gt;类型

x 无标题 #region 博客Code {DBEntities}生成EFModel的时候自己命名的 using ({DBEntities} db = new { DBEntities }()) { var que = (from c in db.CollectItem select c).ToList(); List<Dictionary<string, object>> retList = new List<Dictionary<string, object>

Core Data存储自定义类型数据

目录: 一.使用CoreData存储基本数据 二.使用CoreData存储自定义类型数据 简单介绍CoreData CoreData是iOS编程中使用持久化数据存储的一种方式,我们知道CoreData并不是数据库本身,而是Apple提供的对象持久化技术--Object Persistent technology.CoreData框架为我们的数据变更.管理.对象存储.读取和恢复提供了支持.下面我们来尝试创建一个简单的CoreData Project. 操作 1. 打开x-code,为你的proje

struts2自定义类型转换器

首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机制即可满足大部分类型转换需求.如: 类User.java package models; public class User { private String username; private String password; public String getUsername() { retur

iOS自定义转场动画实战讲解

iOS自定义转场动画实战讲解 转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现.隐藏视图.如果用到了navigationController,还可以调用pushViewController:animated:和popViewController这一组函数将新的视图控制器压栈.弹栈. 下图中所有转场动画都是自定义的

Hibernate中的自定义类型——UserType、CompositeUserType

一.UserType Hibernate拥有自定义映射表属性的机制,主要通过实现接口UserType,具体的UserType: import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import net.sf.hibernate.HibernateException; /** * @author hy-he * */ public interface UserType

自定义类型转换器converter

作用:目前将日期转换成string,将string转换成我想要的类型   0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时  表单数据以字符串的形式提交给服务器,在服务器端转换成不同的Java数据类型 2.当需要在页面显示数据时  将不同的Java数据类型转换为对应的字符串格式显示输出 二.Struts2内置的类型转换Struts2内置了常用类型的自动转换功能,支持常见数据类型与字符串之间的转换 三.自定义类型转换1.编写自定义类型转换器,继承St

iOS自定义的UISwitch按钮

UISwitch开关控件 开关代替了点选框.开关是到目前为止用起来最简单的控件,不过仍然可以作一定程度的定制化. 一.创建 UISwitch* mySwitch = [[ UISwitchalloc]initWithFrame:CGRectMake(200.0,10.0,0.0,0.0)]; 是不是很奇怪,大小竟然是0.0×0.0,没错,系统会自动帮你决定最佳的尺寸,你自己写的尺寸会被忽略掉,你只要定义好相对父视图的位置就好了.默认尺寸为79 * 27. 二.显示控件 [ parrentView

iOS 自定义TabBarController zhuanzai

iOS 自定义TabBarController 一.自定义的思路 iOS中的TabBarController确实已经很强大了,大部分主流iOS应用都会采用.但是往往也不能满足全部的需求,因此需要自定义TabBar,自定义需要对系统的TabBar工作方式有很好的理解,自定义需要勇气. 自定义TabBar的原则:尽量利用系统自带TabBar,只改需要改的地方. 二.自定义TabBar的总体过程 1.先把自带的TabBar条给取消了 2.自己做一个view,上面放几个按钮,设定按钮的点击事件.并设置s

strut2 自定义类型转换器

描述:假设用户请求地址:http://xxx.action?date=2015-01-01.  假设action中已经存在了date属性,且类型为Date.当用户请求的参数格式为xxxx-xx-xx或者xxxx-x-x的时候,action可以正常的接收到日期类型,即string字符串可以自动转换为Date类型.但是当用户的请求为xxxxxxxx(20150101)的时候,action不能够转换为日期类型,且报错.这时候就需要自定义类型转换器来实现日期的转换. 问题解决:自定义类型转换器 新建立一