iOS 中model的使用

開發(fā)中經(jīng)常會用model 進行傳值,但是有時候直接用解析的字典也很方便那么什么時候用model呢? 個人理解 需要在本地做數(shù)據(jù)狀態(tài)變化的用model 比較方便(比如需要對一個列表中的model進行單選或多選操作時)
而如果只是對數(shù)據(jù)進行展示 直接用字典進行賦值就ok 了

iOS 中怎么把字典轉(zhuǎn)化為model 呢個人覺得KVC 是很方便的下面簡單說一下如何利用KVC 進行字典和model 的轉(zhuǎn)化

字典類型

NSDictionary *dic = @{@"id":@"123",
                          @"corpid":@"hs",
                          @"corpName":@"shhs",
                          @"userid":@"nmf",
                          @"maker":@"zq",
                          @"status":@"草擬"};

創(chuàng)建一個和字典對應的model 類 屬性名需要和字典的key 值一致,由于id 是預留字段我們無法添加一個名為id 的屬性,現(xiàn)在先用serialid 來代替它

#import <Foundation/Foundation.h>

@interface CorpModel : NSObject

@property(nonatomic,strong)NSString *serialid;
@property(nonatomic,strong)NSString *corpid;
@property(nonatomic,strong)NSString *corpName;
@property(nonatomic,strong)NSString *userid;
@property(nonatomic,strong)NSString *maker;
@property(nonatomic,strong)NSString *status;
@property(nonatomic,assign)bool      is select; // 除了字典中包含的字段外還可以根據(jù)需要自己在model 中添加需要的字段

@end

在CorpModel 中要實現(xiàn)兩個方法

-(instancetype)initWithDic:(NSDictionary *)dic ;
+(instancetype)corpObjectWithDic:(NSDictionary *)dic;

方法的實現(xiàn)

+(instancetype)corpObjectWithDic:(NSDictionary *)dic{
    
    CorpModel *model = [[self alloc]initWithDic:dic];
    return model ;
}

-(instancetype)initWithDic:(NSDictionary *)dic{
    
    if (self = [super init]) {
      
        [self setValuesForKeysWithDictionary:dic];
    }
// 自己在model中添加的字段無法通過setValuesForKeysWithDictionary 進行賦值要在初始化時定義初值
    self.isselect = NO ;
    return self ;
}

當你在外部調(diào)用corpObjectWithDic:方法時內(nèi)部會調(diào)用initWithDic 的方法返回一個model 對象

對于特殊字段的處理 實現(xiàn)以下方法

// 
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
  
    if ([key isEqualToString:@"id"]) {
        
        self.serialid = value ;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 概述 ? iOS源碼解析—YYModel(YYClassInfo)分析了如何根據(jù)OC的Class對象構建...
    egoCogito_panf閱讀 11,835評論 4 32
  • iOS網(wǎng)絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,494評論 1 23
  • 來自網(wǎng)絡 序言 目前形勢,參加到iOS隊伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會...
    用心在飛閱讀 934評論 5 4
  • 她已經(jīng)徹底失聯(lián)了,習慣了,不再如最初那般熱烈了。 聽著ever eternity,心里很平靜,回憶的味道。 故事是...
    天上有顆呆星閱讀 231評論 0 0
  • 這是昨晚和朋友視頻的時候朋友給我截的圖 昨晚好像是兩點多睡的覺 和朋友視頻快一個小時 我也不知道我兩在說些什么 就...
    零八一四閱讀 318評論 0 0

友情鏈接更多精彩內(nèi)容