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

  在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

 

 

posted @ 2014-05-25 20:01  空与一  阅读(590)  评论(0)    收藏  举报