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 ...
随机推荐
- 研究 UIActivityViewController
研究 UIActivityViewController 发布于:2014-04-25 09:51阅读数:5903 特定的编程语言,如 Lisp.lo 和 Mathematica 都是同像性的(homo ...
- App Store审核指南中文版(2014.10.11更新)
App Store审核指南中文版(2014.10.11更新) 2014-10-11 16:36 编辑: suiling 分类:AppStore研究 来源:CocoaChina 2 8657 App ...
- mysql order by 妙用
今天在做一个2次开发的时候,出现一个需求, 需要在商品分类页里面带一个参数,也就是商品ID, 如果分类链接里面有这个ID的时候就需要把这个商品排在分类商品列表的第1个, 原来的思路是,选择分类后,在P ...
- 收集点小文,讲CGI,FASTCGI,PHP-CGI,PHP-FPM之间通透点的文章
http://blog.csdn.net/meegomeego/article/details/36180343 http://www.opsers.org/linux-home/server/php ...
- 使用FastReport的UserDataSet时候,遇到TfrxMemoView内容过多而打印不全的问题
解决方案很简单,就是把Memo所在的Band勾选Stretch就行了.另外还可勾选StartNewPage. 至于UserDataSet本身,猜测就是人为的构造一个类似数据库的集合,大致使用代码如下: ...
- cf446C DZY Loves Fibonacci Numbers
C. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory limit per test 256 megabytes inp ...
- qt QSortFilterProxyModel
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...
- c++之 常量
const常量 当在类型名前面加上关键字const后,表示它是一个只读的量,不能对其进行修改,因而被称为常量. 下面的例子对常量进行修改: const常量是只读的,可以读取它的值,或者用printf打 ...
- python学习之路-7 模块configparser/xml/shutil/subprocess以及面向对象初级入门
本篇记录内容 模块 configparser xml shutil subprocess 面向对象 面向对象基础 面向对象编程和函数式编程对比 面向对象中对象和类的关系 面向对象之构造方法 面向对象之 ...
- poj1703--Find them, Catch them(并查集应用)
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 32073 Accepted: ...