字典转模型简记

1、设定一个plist字典模型
plist


2、建立模型类

  • .h方法
#import <Foundation/Foundation.h>

@interface Question : NSObject
//对应的各属性值
@property (nonatomic,copy)NSString *answer;
@property (nonatomic,copy)NSString *icon;
@property (nonatomic,copy)NSString *title;
@property (nonatomic,strong)NSArray *options;

//设定类的实例方法和类方法,类方法用于便捷调用
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)questionWithDict:(NSDictionary *)dict;

//关联plist方法
+(NSArray *)questions;
@end
  • .m方法
#import "Question.h"

@implementation Question

-(instancetype)initWithDict:(NSDictionary *)dict{
    self = [super init];
    if (self) {
    //setValuesForKeysWithDictionary方法读取字典相应数据
       [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}

+(instancetype)questionWithDict:(NSDictionary *)dict{
    return [[self alloc] initWithDict:dict];
}

//加载plist数组
+(NSArray *)questions{
    NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"questions.plist" ofType:nil]];
    NSMutableArray *arrayM = [NSMutableArray array];
    for(NSDictionary *dict in array){
        [arrayM addObject:[self questionWithDict:dict]];
    }

    return arrayM;
}

//对象描述方法,显示字典中的内容
-(NSString *)description{
    return [NSString stringWithFormat:@"<%@: %p>{answer:%@, icon:%@, title:%@, options:%@}",self.class,self,self.answer,self.icon,self.title,self.options];
}

@end

3、 控制器方法读取

#import "ViewController.h"
#import "Question.h"

@interface ViewController ()
//设置读取模型字典的数组属性
@property (nonatomic,strong)NSArray *questions;
@end

@implementation ViewController
//用懒加载方式读取模型方法
-(NSArray *)questions{
    if(_questions == nil){
        _questions = [Question questions];
    }
    return _questions;
}

- (void)viewDidLoad {
    [super viewDidLoad];
   // 循环显示读取数据(该方法可实现中文转译)
    for(Question *obj in self.questions){
        NSLog(@"%@", obj);
    }
}
@end
发布了22 篇原创文章 · 获赞 0 · 访问量 4556
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章