美文网首页
Model--系统原生

Model--系统原生

作者: wpf_register | 来源:发表于2016-07-24 01:15 被阅读21次

    MVC 架构中,经常要创建各种model,而最常用的就是用系统方法setValuesForKeysWithDictionary: ,同时在model 中用setValue:forUndefinedKey:防止crash.

    下面示意是一个大model的创建

    ItemModel.h

    #import <Foundation/Foundation.h>
    #import "AtlasModel.h"
    #import "CoverKeyModel.h"
    #import "LabelModel.h"
    #import "LikePeopleModel.h"
    #import "UserModel.h"
    
    @interface ItemModel : NSObject
    
    //遇字典建model
    @property (nonatomic,retain) AtlasModel *atlasModel;
    @property (nonatomic,retain) UserModel *userModel;
    
    //遇数组建数组
    @property (nonatomic,retain) NSMutableArray *coverKeyArray;
    @property (nonatomic,retain) NSMutableArray *labelsArray;
    @property (nonatomic,retain) NSMutableArray *likePeopleArray;
    //bool类型
    @property (nonatomic,assign) BOOL isCollect;
    @property (nonatomic,assign) BOOL isLike;
    
    @end
    

    ItemModel.M

    @implementation ItemModel
    
    //字典转model时一定要有这个方法,防止程序崩溃
    - (void)setValue:(id)value forUndefinedKey:(NSString *)key{
        //字典中包含字典
        if ([key isEqualToString:@"atlas"]) {
            
            [self.atlasModel setValuesForKeysWithDictionary:value];
        }
        
        if ([key isEqualToString:@"user"]) {
            
            [self.userModel setValuesForKeysWithDictionary:value];
        }
        //字典中包含数组
        if ([key isEqualToString:@"labels"]) {
            
            for (NSDictionary *dic in value) {
                
                LabelModel *model = [[LabelModel alloc]init];
                [model setValuesForKeysWithDictionary:dic];
                [self.labelsArray addObject:model];
            }
        }
        
        if ([key isEqualToString:@"coverKey"]) {
            
            for (NSDictionary *dic in value) {
                
                CoverKeyModel *model = [[ CoverKeyModel alloc]init];
                [model setValuesForKeysWithDictionary:dic];
                [self.coverKeyArray addObject:model];
            }
        }
        if ([key isEqualToString:@"likePeople"]) {
            for (NSDictionary *dic  in value) {
                LikePeopleModel *model = [[LikePeopleModel alloc]init];
                [model setValuesForKeysWithDictionary:dic];
                [self.likePeopleArray addObject:model];
                
            }
        }
    }
    
    //创建子model
    - (UserModel*)userModel{
        if (!_userModel) {
            _userModel = [[UserModel alloc]init];
        }
        return _userModel;
    }
    - (AtlasModel*)atlasModel{
        if (!_atlasModel) {
            _atlasModel = [[AtlasModel alloc]init];
        }
        return _atlasModel;
    }
    
    //数组懒加载
    - (NSMutableArray*)labelsArray{
        if (!_labelsArray) {
            _labelsArray = [NSMutableArray array];
        }
        return _labelsArray;
    }
    - (NSMutableArray *)coverKeyArray{
        if (!_coverKeyArray) {
            _coverKeyArray = [NSMutableArray array];
        }
        return _coverKeyArray ;
    }
    - (NSMutableArray*)likePeopleArray{
        if (!_likePeopleArray) {
            _likePeopleArray = [NSMutableArray array];
        }
        return _likePeopleArray;
    }
    
    
    @end
    
    

    相关文章

      网友评论

          本文标题:Model--系统原生

          本文链接:https://www.haomeiwen.com/subject/ogbwjttx.html