关于这个知识点,并没有太多难点,其中主要要记住的就是字典转模型,字典转模型一般步骤如下:

(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;
}

Corwien
6.3k 声望1.6k 粉丝

为者常成,行者常至。