協(xié)議)使用一個解釋器MTLJSONAdapter去轉(zhuǎn)換模型對象。NSError*error=nil;MyObject*myObject=[MTLJSONAdaptermodelOfClass:MyObject.classfromJSONDictionary:JSONDictiona" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Mantle 簡單教程

系統(tǒng) 1611 0

Mantle可以很方便的去書寫一個模型層的代碼。

使用它可以很方便的去反序列化JSON或者序列化為JSON(需要在 MTLModel 子類中實現(xiàn) <MTLJSONSerializing> 協(xié)議)

使用一個解釋器 MTLJSONAdapter 去轉(zhuǎn)換模型對象。

    
      
        NSError *error = 
        
          nil; 
          
            MyObject *myObject = [
            
              MTLJSONAdapter 
              
                modelOfClass:
                
                  MyObject.
                  
                    class 
                    
                      fromJSONDictionary:
                      
                        JSONDictionary 
                        
                          error:&error]; 
                          
                            //把
                            
                              JSONDictionary轉(zhuǎn)換為模型對象 
                              
                                NSDictionary *
                                
                                  JSONDictionary = [
                                  
                                    MTLJSONAdapter 
                                    
                                      JSONDictionaryFromModel
                                      
                                        :myObject]; 
                                        
                                          //將模型對象轉(zhuǎn)為
                                          
                                            JSON字典 
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

+JSONKeyPathsByPropertyKey

這個方法返回一個字典,指定著你的模型對象和JSON中關(guān)鍵字的映射關(guān)系。

一個例子:

    
      
        
          @interface 
          
            XYUser : 
            
              MTLModel 
              
                @property (
                
                  readonly, 
                  
                    nonatomic, 
                    
                      copy) 
                      
                        NSString *name; 
                        
                          @property (
                          
                            readonly, 
                            
                              nonatomic, 
                              
                                strong) 
                                
                                  NSDate *createdAt; 
                                  
                                    @property (
                                    
                                      readonly, 
                                      
                                        nonatomic, 
                                        
                                          assign, getter = isMeUser) 
                                          
                                            BOOL meUser; 
                                            
                                              @end 
                                              
                                                
                                                  @implementation 
                                                  
                                                    XYUser + (
                                                    
                                                      NSDictionary *)JSONKeyPathsByPropertyKey { 
                                                      
                                                        return @{ 
                                                        
                                                          @"createdAt": 
                                                          
                                                            @"created_at", 
                                                            
                                                              //這里代表createdAt屬性映射JSON中的created_at關(guān)鍵字 
                                                              
                                                                @"meUser": NSNull
                                                                
                                                                  .null 
                                                                  
                                                                    //meUser不會從JSON中反序列化 }; } 
                                                                    
                                                                      @end 
                                                                    
                                                                  
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

當我們用字典反序列化的時候

    
      
        NSDictionary *
        
          JSONDictionary = @{ @
          
            "name"
            
              : @
              
                "john", @
                
                  "created_at"
                  
                    : @
                    
                      "2013/07/02 16:40:00 +0000", @
                      
                        "plan"
                        
                          : @
                          
                            "lite" }; 
                            
                              XYUser *user = [
                              
                                MTLJSONAdapter 
                                
                                  modelOfClass:
                                  
                                    XYUser.
                                    
                                      class 
                                      
                                        fromJSONDictionary:
                                        
                                          JSONDictionary 
                                          
                                            error:&error]; 
                                            
                                              //user中的name為john createdAt為
                                              
                                                2013/
                                                
                                                  07/
                                                  
                                                    02 
                                                    
                                                      16
                                                      
                                                        :
                                                        
                                                          40
                                                          
                                                            :
                                                            
                                                              00 +
                                                              
                                                                0000 meUser為
                                                                
                                                                  0 plan將會被忽略 
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

+JSONTransformerForKey:

實現(xiàn)這個方法去用一個不一樣的類型轉(zhuǎn)換器去轉(zhuǎn)化屬性

    
      + (NSValueTransformer *)JSONTransformerForKey:(
      
        NSString *)key { 
        
          if ([key isEqualToString:
          
            @"createdAt"]) { 
            
              return [NSValueTransformer valueTransformerForName:XYDateValueTransformerName]; } 
              
                return 
                
                  nil; } 
                
              
            
          
        
      
    
  

對于一些值的轉(zhuǎn)換:

    
      + (NSValueTransformer *)createdAtJSONTransformer {
    
      
        return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(
        
          NSString *str) { 
          
            return [
            
              self
              
                .dateFormatter dateFromString:str]; } reverseBlock:^(
                
                  NSDate *date) { 
                  
                    return [
                    
                      self
                      
                        .dateFormatter stringFromDate:date]; }]; } 
                      
                    
                  
                
              
            
          
        
      
    
  

+classForParsingJSONDictionary:

如果定義了一個類簇,可以實現(xiàn)這個方法去轉(zhuǎn)換。

    
      
        
          @interface 
          
            XYMessage : 
            
              MTLModel 
              
                @end 
                
                  
                    @interface 
                    
                      XYTextMessage: 
                      
                        XYMessage 
                        
                          @property (
                          
                            readonly, 
                            
                              nonatomic, 
                              
                                copy) 
                                
                                  NSString *body; 
                                  
                                    @end 
                                    
                                      
                                        @interface 
                                        
                                          XYPictureMessage : 
                                          
                                            XYMessage 
                                            
                                              @property (
                                              
                                                readonly, 
                                                
                                                  nonatomic, 
                                                  
                                                    strong) 
                                                    
                                                      NSURL *imageURL; 
                                                      
                                                        @end 
                                                        
                                                          
                                                            @implementation 
                                                            
                                                              XYMessage + (Class)classForParsingJSONDictionary:(
                                                              
                                                                NSDictionary *)JSONDictionary { 
                                                                
                                                                  if (JSONDictionary[
                                                                  
                                                                    @"image_url"] != 
                                                                    
                                                                      nil) { 
                                                                      
                                                                        return XYPictureMessage
                                                                        
                                                                          .class; } 
                                                                          
                                                                            if (JSONDictionary[
                                                                            
                                                                              @"body"] != 
                                                                              
                                                                                nil) { 
                                                                                
                                                                                  return XYTextMessage
                                                                                  
                                                                                    .class; } NSAssert(
                                                                                    
                                                                                      NO, 
                                                                                      
                                                                                        @"No matching class for the JSON dictionary '%@'.", JSONDictionary); 
                                                                                        
                                                                                          return 
                                                                                          
                                                                                            self; } 
                                                                                            
                                                                                              @end 
                                                                                            
                                                                                          
                                                                                        
                                                                                      
                                                                                    
                                                                                  
                                                                                
                                                                              
                                                                            
                                                                          
                                                                        
                                                                      
                                                                    
                                                                  
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

使用

    
      
        NSDictionary *textMessage = @{ @
        
          "id"
          
            : 
            
              @1, @
              
                "body"
                
                  : @
                  
                    "Hello World!" }; 
                    
                      NSDictionary *pictureMessage = @{ @
                      
                        "id"
                        
                          : 
                          
                            @2, @
                            
                              "image_url"
                              
                                : @
                                
                                  "http://example.com/lolcat.gif" }; 
                                  
                                    XYTextMessage *messageA = [
                                    
                                      MTLJSONAdapter 
                                      
                                        modelOfClass:
                                        
                                          XYMessage.
                                          
                                            class 
                                            
                                              fromJSONDictionary:textMessage 
                                              
                                                error:
                                                
                                                  NULL]; 
                                                  
                                                    XYPictureMessage *messageB = [
                                                    
                                                      MTLJSONAdapter 
                                                      
                                                        modelOfClass:
                                                        
                                                          XYMessage.
                                                          
                                                            class 
                                                            
                                                              fromJSONDictionary:pictureMessage 
                                                              
                                                                error:
                                                                
                                                                  NULL]; 
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

數(shù)據(jù)的持久化

MTLModel 已經(jīng)遵循了 <NSCoding> 協(xié)議,所以可以 NSKeyedArchiver 歸檔這個模型對象。

Mantle 簡單教程


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天操天天透 | 亚洲精品专区一区二区三区 | 欧美日韩精选 | 久久久91精品国产一区二区 | 久久精品视频观看 | 精品一区二区三区中文字幕 | 国产野花视频天堂视频免费 | 综合色图 | 国产成人精品aaaa视频一区 | 狠狠大日本亚洲香蕉亚洲 | 玖玖精品在线观看 | 午夜欧美性视频在线播放 | 日韩中文字幕a | 亚洲国产另类久久久精品小说 | 91精品国产乱码在线观看 | 午夜毛片在线观看 | 亚洲另类第一页 | 亚洲国产精品免费在线观看 | 手机看片国产 | 福利姬视频在线观看 | 亚洲一区二区精品视频 | 99热在线获取最新地址 | 中文字幕日本不卡一二三区 | 成年女人免费观看视频 | 日韩亚洲欧美一区二区三区 | 亚洲五月婷 | 日本3p视频在线看高清 | 香蕉网视频 | 97玖玖| 久草在线视频资源站 | 99免费在线视频 | 四虎永久在线观看免费网站网址 | 成人高清毛片a | 视频播放在线观看精品视频 | 国产免费久久精品99久久 | 色综合天天综合网亚洲影院 | 一级片免费看 | 99热网| 久久国产一区二区三区 | 亚洲最大激情网 | 在线成人播放毛片 |