iOS开发 ORM 对象关系映射 plist文件转化成对象

本文介绍iOS开发中plist文件的应用及通过面向对象的方法将其转换为模型对象的过程。使用NSDictionary存储数据,并通过自定义模型类实现了数据的简单查询。

  在iOS开发时,经常用到plist文件, 它的全名是:Property List,属性列表文件。这一种用来存储串行化后的对象的文件,该文件的扩展名为plist,因此通常被称为plist文件,其实质是xml文件。

  plist文件通常用于存储各种数据。如下图所示,该plist保存了10条数据,该数据是一个NSDictionary,它包含3个属性(键值对)以及一个数组。

  如果用代码读取一条数据,需要获得这个NSDictionary,再依次读取键值对。代码如下。

1      name = dict[@"answer"];
2      imageView.image = [UIImage imageNamed:dict[@"icon"]];
3      label.text = dict[@"title"];
4      options = dict[@"options"];

  在面向对象的开发过程中,一般将数据映射成对象(ORM)。ORM模型了提供了简化的数据查询方式,具体到iOS开发,可以将plist文件中的NSDictionary数据映射成一个对象,其键值对就是对象的属性。该对象的定义如下。

@interface CsyQuestionModel : NSObject

@property (copy,nonatomic) NSString *answer;
@property (copy,nonatomic) NSString *icon;
@property (copy,nonatomic) NSString *title;
@property (strong,nonatomic) NSArray *options;

- (instancetype)initWithDictionary:(NSDictionary *)dict;

+ (instancetype)initWithDictionary:(NSDictionary *)dict;

@end

  需要注意的是,该对象提供了两个快速构造方法。instancetype是iOS7引入的关键字,它和id一样,可以表示任何类型,其作用是让编译器检查赋值对象的类型,如果不是CsyQuestionModel类型,则会给出警告。它只能用于返回类型,不能用于参数类型。该对象的实现如下。

 1 @implementation CsyQuestionModel
 2 
 3 - (instancetype)initWithDictionary:(NSDictionary *)dict
 4 {
 5     self = [super init];
 6     
 7     if (self) {
 8         [self setValuesForKeysWithDictionary:dict];
 9         
10     }
11     
12     return self;
13 }
14 
15 + (instancetype)initWithDictionary:(NSDictionary *)dict
16 {
17     return [[CsyQuestionModel alloc] initWithDictionary:dict];
18 }
19 
20 @end

 

 

转载于:https://www.cnblogs.com/csy8752316/p/3751520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值