iOS 开发之 mock 数据(一)。在大团队开发的过程中,很多时候后台往往先定义好接口文档,然后后台去开发接口,前端开发 app。并行开发,提高开发效率。下面给大家分享一下团队中使用的 mock 机制。
mock 数据有两种方式, 一种是后台建立 mock 数据服务器,另一种是 app 开发者,在项目中自己维护。目前我们采用的是放在自己的项目中来维护的。
mock 要实现的目标面向 AOP 编程开发
由于 mock 数据,在接口联调完毕后就要被抛弃掉,如果数据是是散落在代码中的话,我们就要一点一点的移除,如果不移除的话后期可能会影响到我们的代码逻辑,很不友好。
开关机制
在我们的工程中,有一个开关,可以控制是否打开 mock 数据机制,进行 mock 操作。
个性化操作
在我么开发的过程中,我们会存在一部分接口需要使用 mock 数据,也有一部分接口不需要 mock 数据,这个时候要求我们能够做到个性话的操作,允许对单个接口进行是否进行 mock 操作进行处理。
具体实现
经过分析,我这里先来说说如何使用面向 AOP 编程的思想来对接口进行 mock 操作。NSURLProtocol iOS 开发的利器,几乎可以拦截应用内所有的网络请求(WKwebview 除外)
NSURLProtocol 可以实现:
1)重定向网络请求
2)忽略网络请求,使用本地缓存
3)自定义网络请求的返回结果
4)一些全局的网络请求设置
我们这里主要是使用自定义网络请求的返回结果的功能。
使用前要进行相关的注册
- @interface JKURLProtocol: NSURLProtocol@end - (BOOL) application: (UIApplication * ) application didFinishLaunchingWithOptions: (NSDictionary * ) launchOptions { //注册protocol [NSURLProtocol registerClass:[JKURLProtocol class]]; return YES;}
常用的几个方法如下:
- + canInitWithRequest: //是否处理对应的reuest,默认为NO
- + canonicalRequestForRequest: +(NSMutableURLRequest * ) redirectHostInRequset: (NSMutableURLRequest * ) request //通常该方法你可以简单的直接返回request,但也可以在这里修改request,比如添加header,修改host等
- + requestIsCacheEquivalent: toRequest: //主要判断两个request是否相同,如果相同的话可以使用缓存数据,通常只需要调用父类的实现。
- - startLoading - stopLoading //这两个方法主要是开始和取消相应的request,而且需要标示那些已经处理过的request。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-11/18496662.html