封装initWithNSDictionary:方法 该方法接收NSDictionary对象, 返回PersonModel对象. #pragma mark - 使用runtime将JSON转成Model - (void)json2Model { `NSString *file = [[NSBundle mainBundle] pathForResource:@"Persons" ofType:@"json"];` NSData *data = [NSData data…
最近在看Object-C运行时特性,其中有一个特别好用的特性叫 Method Swizzling ,可以动态交换函数地址,在应用程序加载的时候,通过运行时特性互换两个函数的地址,不改变原有代码而改变原有行为,达到偷天换日的效果,下面直接看效果吧 1.我们先创建一个Calculator类,并提供两个简单的方法 #import <Foundation/Foundation.h> @interface Calculator : NSObject + (instancetype)shareInstan…
背景: 很多时候,我们从服务端请求下的数据都是Json格式,我们需要拿这些数据显示到我们的UI界面. 因此,我们的做法基本都会先将json转为方便使用的数据模型,或者也可以直接转字典解决. 在OC中,我们有很多优秀的第三方库帮助我们实现,比如MJExtension.JSONModel等,这些库基本都是利用runtime实现读取属性名并利用kvc重新赋值属性. 在Swift中,由于runtime的局限,比较出名的有SwiftyJSON.ObjectMapper等. 其中: 1.SwiftyJSON…
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗忘.这段时间准备自己造一些轮子,主要目的还是为了提升自身实力,总不能一遇到问题就Google. 之前写i博客园客户端的时候,经常会遇到JSON数据转Model的功能.一般遇到这种问题我都是自己在对应Model类中定义一个+ (instance)initWithAttributes:(NSDictio…
优化网站设计(十四):使AJAX调用尽可能利用缓存特性 前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践.这个列表请参考  Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应…
1.准备 我们新建一个项目名叫ChangeFont,然后我就随便找了个名叫loveway.ttf的字体库拖进去,里面的工程目录大概就是这样的 目录 现在我们就简单的直接在storyboard上拖了一个label一个button,约束好,像这样 storyboard 嗯,就这样,很简单,运行 运行结果 好的显示正常,没什么问题,接下来改变字体. 2.改变字体 我们之前已经把loveway.ttf这个文件拖进去了,现在在plist文件里面配置一下.打开plist然后加入名为Fonts provide…
GitHub链接: https://github.com/mozhenhau/D3Json D3Json 通过swift的反射特性,把json数据转换为model对象,本类最主要是解决了其他一般json转换类不能转换自定义对象的问题 只有一个文件:D3Json.swfit 扩展写在addExtension.可以参照扩展 Usage 例子在D3Json的Project里面,写了两个测试,一个是json转单model,一个是转model的list 在playgroud里面也有两个例子,但是playg…
建议55:利用定制特性减少可序列化的字段 特性(attribute)可以声明式地为代码中的目标元素添加注释.运行时可以通过查询这些托管块中的元数据信息,达到改变目标元素运行时行为的目的.System.Runtime.Serialization命名空间下,有4个这样的特性: OnDeserializedAttribute,当它应用于某方法时,会指定在对象反序列化后立即调用此方法. OnDeserializingAttribute,当他应用于某方法是,会指定在反序列化对象时调用此方法. OnSeri…
在开发项目中,会有这样变态的需求: 推送:根据服务端推送过来的数据规则,跳转到对应的控制器 feeds列表:不同类似的cell,可能跳转不同的控制器(嘘!产品经理是这样要求:我也不确定会跳转哪个界面哦,可能是这个又可能是那个,能给我做灵活吗?根据后台返回规则任意跳转?) 思考:wocao!这变态的需求,要拒绝他吗? switch判断呗,考虑所有跳转的因素?这不得写死我... switch () { case : break; default: break; } 我是这么个实现的(runtime是…
利用runtime我们能够动态生成对象.属性.方法这特性 假定我们要动态生成DYViewController,并为它创建属性propertyName 1)对象名 NSString *class = @"DYViewController"; const char *className = [class cStringUsingEncoding:NSASCIIStringEncoding]; 2)从一个字符串返回一个Class Class newClass = objc_getClass(…