博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发BaseModel的创建和使用(基类)
阅读量:3754 次
发布时间:2019-05-22

本文共 1819 字,大约阅读时间需要 6 分钟。

  • ios开发中数据处理和视图有许多重复使用的地方, 基类的使用可以有效的避免每次都写, 把重复的东西写到基类中, 正常创建的Molde类只需要继承基类即可, 这样有效的提高编码速度和代码质量, 基类还包括其他(BaseController, BaseView)等, 本文以BaseModel数据部分的基类为例。

先贡献基类的代码附带简单的说明

/* BaseModel.h文件 */#import 
@interface BaseModel : NSObject/* 这里也可以添加每个地方都要用到的属性 比如id,name等等, 直接以正常属性书写方式写在这里即可 */@property (nonatomic, strong) NSString *name;@property (nonatomic, strong) NSString *nID; /* 这里的参数以自己工程为准, 每个接口都有的参数可以写在这里 */+ (id)modelWithDictionary:(NSDictionary *)dic; /** 这是公用的过滤接口数据的方法 */@end/* 注意: id 为系统关键字所以 属性声明时写的是nID 需要在后面过滤一下即可 */
/* 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类
/* 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
  • 使用部分
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原理和这个基本都相似, 就不一一列举了。

转载地址:http://slvsn.baihongyu.com/

你可能感兴趣的文章
P1563 玩具谜题
查看>>
L1-002 打印沙漏 (20分)
查看>>
P1217 [USACO1.5]回文质数 Prime Palindromes
查看>>
P1014 Cantor表
查看>>
实验十 算术编码
查看>>
实验二 二维随机变量信息量的计算
查看>>
使用react脚手架创建react项目时发生错误
查看>>
关于setState是异步与同步的
查看>>
56. 合并区间---js解法
查看>>
5. 最长回文子串---js解法
查看>>
USACO 2007 Open Gold/acwing2240:餐饮 (拆点+最大流)‘三分图匹配’
查看>>
那些年你不知道的C++STL进制转换函数
查看>>
区间和并问题 思路加模板整理(校门外的树)
查看>>
C++中next_permutation函数的使用方法、原理及手动实现
查看>>
网络流常用小技巧之 拆点
查看>>
最大权闭合子图
查看>>
最小权点覆盖集 与 最大权独立集
查看>>
POJ 2125 Destroying The Graph && Acwing 2325. 有向图破坏(拆点+最小权点覆盖集)
查看>>
计算几何基础知识整理大全 代码模板与证明过程 (直线、向量、多边形、三维计算几何、凸包、半平面交、最小圆覆盖)
查看>>
计算几何之 判断两线段是否相交 代码模板与证明
查看>>