说明:model类模板已默认过滤null值,附加特殊情况的关键字ID名的冲突(需手动去掉注释代码)。MyMessageModel为示例的名字。可以自己随便起。

1.自己创建一个继承与NSObject的类,用于当model数据模型用。然后在.h文件中根据接口文档或者json返回数据的添加相应属性。

   并复制以下model类模板代码.h文件的- (instancetype)initWithDictionary:(NSDictionary *)dictionary;方法到自己创建的数据模型类.h中。

2.在自己的数据模型类.m文件中,复制以下model模板类.m中代码到自己创建的类.m中。

model类.h文件

 #import <Foundation/Foundation.h>

 @interface MyMessageModel : NSObject

 // 示例属性名,根据后台接口返回的数据自己copy到此处

 @property (nonatomic, strong) NSString *namet;    

 /**
* Init the model with dictionary
*
* @param dictionary dictionary
*
* @return model
*/
- (instancetype)initWithDictionary:(NSDictionary *)dictionary; @end

modell类.m文件

 #import "MyMessageModel.h"

 @implementation MyMessageModel

 - (void)setValue:(id)value forUndefinedKey:(NSString *)key {

     /*  [Example] change property id to productID
*
* if([key isEqualToString:@"id"]) {
*
* self.productID = value;
* return;
* }
*/ // show undefined key
// NSLog(@"%@.h have undefined key '%@', the key's type is '%@'.", NSStringFromClass([self class]), key, [value class]);
} - (void)setValue:(id)value forKey:(NSString *)key { // ignore null value
if ([value isKindOfClass:[NSNull class]]) { return;
} [super setValue:value forKey:key];
} - (instancetype)initWithDictionary:(NSDictionary *)dictionary { if ([dictionary isKindOfClass:[NSDictionary class]]) { if (self = [super init]) { [self setValuesForKeysWithDictionary:dictionary];
}
} return self;
} @end

3.对于极少情况下遇到的接口返回json数据带ID的参数和系统ID关键字冲突的解决。

  打开.m中

/* [Example] change property id to productID 

if([key isEqualToString:@"id"])

self.productID = value;

return;  } 

*/   打开这行的注释。将.h中冲突的ID属性名改成productID

4.如何使用model类?     控制器导入模型头文件.h。 在网络请求回来的数据方法中,这样调用  

 MyMessageModel *model = [[MyMessageModel alloc] initWithDictionary:data];

这样既可创建了一个数据模型。

最新文章

  1. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
  2. JDK安装,环境配置
  3. jQuery coveringBad 效果对比
  4. 让chrome浏览器变成在线编辑器
  5. Web Api 在线参考文档
  6. Oracle DBA需掌握的命令集锦(推荐)
  7. POJ 3321 Apple Tree dfs+二叉索引树
  8. 如何获取ul 中li选中的值点击button按钮跳转链接
  9. Hibernate配置文件中配置各种数据库的driver、URL
  10. java递归
  11. RISC_CPU
  12. WinCE中断结构分析
  13. vue原理20181211
  14. 创建第一个Djiago
  15. Html学习笔记3
  16. Spring第四天——SSH整合
  17. Windows I/O完成端口
  18. 心脏滴血HeartBleed漏洞研究及其POC
  19. webpack学习笔记丁点积累
  20. [MySQL] gap lock/next-key lock浅析

热门文章

  1. 图形化OpenGL调试器 BuGLe [转]
  2. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
  3. 【ZZ】如何选择适合自己项目的编程语言
  4. UNIX标准化及实现之限制
  5. 线程控制之线程和fork
  6. mysql --The MEMORY Storage Engine--官方文档
  7. centos 配置NFS服务器
  8. C#轻型ORM框架PetaPoco试水
  9. Java中执行外部命令
  10. APK文件安装模拟器和ADB命令的使用