关于这个知识点,并没有太多难点,其中主要要记住的就是字典转模型,字典转模型一般步骤如下:
(1)首先创建需要数据的 get 和 set 方法,例如:
@property (nonatomic, copy) NSString *answer;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *icon;
(2)在一个类中(假设为 MJQuestion)创建两个方法(一个类方法、一个对象方法,作用是一样的),传入 一个字典,取出数据用 get 方法保存到成员变量中,例如:
- (instancetype)initWithDict:(NSDictionary *)dict
{
if(self = [super init])
{
self.icon = dict[@"icon"]; self.title = dict[@"title"]; self.answer = dict[@"answer"];
self.options = dict[@"options"];
}
return self;
}
+ (instancetype)questionWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
(3)将 plist 文件中的数据转成字典,并传给上面方法,返回值为 MJQuestion 对象,再将对象保存到 NSMutableArray 中,之后读取数据时就可以根据 NSMutableArray 索引取出每个 MJQuestion 对象,再从 MJQuestion 对象中读取数据显示到相关控件上。部分代码如下:
- (NSArray *)questions
{
if (_questions == nil)
{
// 1.加载 plist
NSArray *dictArray =
[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"]];
// 2.字典转模型
NSMutableArray *questionArray = [NSMutableArray array];
for (NSDictionary *dict in dictArray)
{
MJQuestion *question = [MJQuestion questionWithDict:dict];
[questionArray addObject:question];
}
// 3.赋值
_questions = questionArray;
}
return _questions;
}