IOS开发之动态获取模型的属性值
#import "model.h"
#import <objc/runtime.h>
@implementation model
+(instancetype)modelWithDict:(NSDictionary *)dict
{
model *mo = [[model alloc] init];
// 得到属性数组.
NSArray *array = [mo getProperties];
// 根据属性的值,去数据字典中取对应的值
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// key 属性值.
NSString *key = obj;
if (dict[key]) {
// 为了保证安全.
[mo setValue:dict[key] forKey:key];
}
}];
// 赋值的时候,需要根据自身的属性值,来取dict字典中的属性.
// 首先,需要能够获得 model 中的属性.
// [mo setValuesForKeysWithDictionary:dict];
return mo;
}
// 动态的获取某一个类的属性.
- (NSArray *)getProperties
{
unsigned int count;
// 获取一个类中的属性
objc_property_t *properties = class_copyPropertyList(self.class, &count);
NSMutableArray *array = [NSMutableArray array];
// 遍历类中的属性,将每一个属性值都转换成 OC 的字符串
for (int i = 0; i < count; i++) {
// pro 依然是 C 语言的数据类型
objc_property_t pro = properties[i];
// 指向C 语言字符串一个指针.
const char *name = property_getName(pro);
NSString *property = [[NSString alloc] initWithUTF8String:name];
NSLog(@"property:%@",property);
[array addObject:property];
}
return array;
}
IOS开发之动态获取模型的属性值的更多相关文章
- 李洪强iOS开发之动态获取UILabel的bounds
李洪强iOS开发之动态获取UILabel的bounds 在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需 ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- iOS开发-Swift获取手机设备信息(UIDevice)
使用UiDevice获取设备信息 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice. ...
- iOS开发UI篇—CAlayer层的属性
iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...
- iOS开发Swift篇—(九)属性
iOS开发Swift篇—(九)属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要1个. ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...
- jquery attr()方法 添加,修改,获取对象的属性值。
jquery attr()方法 添加,修改,获取对象的属性值. jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到 ...
- js解析xml,获取XMl标签属性值
<script type="text/javascript"> var xml="<?xml version=\"1.0\" enc ...
- 获取css的属性值
# -*- coding:utf-8 -*- """ 在元素上执行双击操作 """ from selenium import webdriv ...
随机推荐
- Box.net获5000万美元投资(SAAS博士)
9月29日,据国外媒体报道,“云”存储服务商Box.net已经从Salesforce等投资者获得新一轮融资5000万美元. Box.net过去的投资者也参与了新一轮的融资.最终,在CRM巨人Sales ...
- 《Programming WPF》翻译 第9章 5.默认可视化
原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作 ...
- Uva 1342 - That Nice Euler Circuit
Little Joey invented a scrabble machine that he called Euler, after the great mathematician. In his ...
- 链表的基本操作(Basic Operations on a Linked List)
链表可以进行如下操作: 创建新链表 增加新元素 遍历链表 打印链表 下面定义了对应以上操作的基本函数. 创建新链表 新链表创建之后里面并没有任何元素,我们要为数据在内存中分配节点,再将节点插入链表.由 ...
- xagrs
find /tmp/ -name "*.log" -mtime +4 | xargs -i -t mv {} /home/ find /tmp/ -name "*.log ...
- python学习之路-1 python简介及安装方法
python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...
- Find the maximum(规律,大数)
Find the maximum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) ...
- [CSS3] CSS Display Property: Block, Inline-Block, and Inline
Understanding the most common CSS display types of block, inline-block, and inline will allow you to ...
- 获取被选择的radio的值
function selectRadio() { var val = $('input:radio[name="address_select"]:checked').val(); ...
- [HeadFist-HTMLCSS学习笔记][第四章Web镇之旅]
重要 访问一个目录,即是访问他的index <a>链接到网站,必须加http:// <a>的title属性,能预先知道链接信息 id属性 使得<a> 能再本地跳转. ...