iOS开发BaseModel的创建和使用(基类)
2016-01-29 11:06
961 查看
ios开发中数据处理和视图有许多重复使用的地方, 基类的使用可以有效的避免每次都写, 把重复的东西写到基类中, 正常创建的Molde类只需要继承基类即可, 这样有效的提高编码速度和代码质量, 基类还包括其他(BaseController, BaseView)等, 本文以BaseModel数据部分的基类为例。
使用部分
关于BaseController 和BaseView原理和这个基本都相似, 就不一一列举了。
先贡献基类的代码附带简单的说明
[code]/* BaseModel.h文件 */ #import <Foundation/Foundation.h> @interface BaseModel : NSObject /* 这里也可以添加每个地方都要用到的属性 比如id,name等等, 直接以正常属性书写方式写在这里即可 */ @property (nonatomic, strong) NSString *name; @property (nonatomic, strong) NSString *nID; /* 这里的参数以自己工程为准, 每个接口都有的参数可以写在这里 */ + (id)modelWithDictionary:(NSDictionary *)dic; /** 这是公用的过滤接口数据的方法 */ @end /* 注意: id 为系统关键字所以 属性声明时写的是nID 需要在后面过滤一下即可 */
[code]/* BaseModel.m文件 */ #import "BaseModel.h" @implementation BaseModel - (void)setValue:(id)value forUndefinedKey:(NSString *)key{ if ([key isEqualToString:@"id"]) { self.nID = value; } /* 如果参数的key 是系统关键字的话需要在这里过滤一下, 把value赋给我们自己声明的属性即可 */ } /* 根据数据字典返回model */ + (id)modelWithDictionary:(NSDictionary *)dic { __strong Class model = [[[self class] alloc] init]; [model setValuesForKeysWithDictionary:dic]; return model; } @end
BaseModel的使用
首先创建model类[code]/* ChinnelModel.h */ #import "BaseModel.h" @interface ChannelModel : BaseModel /* 这里继承BaseModel */ /* 属性只需要写这个接口自己特有的属性即可, 公有的不需要写, 过滤方法和model生成的方法也不需要写 */ @property (nonatomic, copy) NSString *title; @property (nonatomic, copy) NSString *pk; @property (nonatomic, copy) NSString *list_icon; @property (nonatomic, strong) NSArray *sons; @end /* ChinnelModel.m */ #import "ChannelModel.h" @implementation ChannelModel /* 这里什么的都不需要写 */ @end
使用部分
[code]NSMutableArray *subArr = [NSMutableArray arrayWithCapacity:0]; NSArray *arr = result[@"data"][@"datas"];/** 拿到接口数据中要用的数组 */ for (NSDictionary *dic in arr) { /** 便是数组 */ ChannelModel *model = [ChannelModel modelWithDictionary:dic]; /** 直接调用BaseModel 的方法即可 */ [subArr addObject:model]; /** 添加到数组中 */ }
关于BaseController 和BaseView原理和这个基本都相似, 就不一一列举了。
相关文章推荐
- iOS加速审核
- iOS 中三种定时器的用法NSTimer、CADisplayLink、GCD
- 手势的3个容易混淆的属性 cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded
- iOS 去掉tabbar顶部的横线
- iOS 单例复用性最强的写法
- iOS 禁止横屏的解决方案
- iOS-Skill技巧
- 分享内bug导致iOS审核失败的解决方案
- iOS开发笔记--Facebook POP 进阶指南
- iOS 动画之购物车 贝塞尔曲线
- 让iOS程序可以和 iTunes 进行文件交互
- iOS 开发用到的常用工具
- iOS开发笔记--iOS项目中工作空间Workspaces概念的理解
- Launch Screen在iOS7/8中的实现
- IOS 宏与常量的使用
- ios获取设备信息
- 芒果iOS开发之快速注释插件VVDocumenter-Xcode
- 起底多线程同步锁(iOS)
- iOS中POST请求
- iOS :获取通讯录 新的contact框架