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

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

Mantle 簡單教程

系統 1897 0

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

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

使用一個解釋器 MTLJSONAdapter 去轉換模型對象。

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

+JSONKeyPathsByPropertyKey

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

一個例子:

    
      
        
          @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關鍵字 
                                                              
                                                                @"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:

實現這個方法去用一個不一樣的類型轉換器去轉化屬性

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

對于一些值的轉換:

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

+classForParsingJSONDictionary:

如果定義了一個類簇,可以實現這個方法去轉換。

    
      
        
          @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]; 
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  

數據的持久化

MTLModel 已經遵循了 <NSCoding> 協議,所以可以 NSKeyedArchiver 歸檔這個模型對象。

Mantle 簡單教程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲一区日韩二区欧美三区 | 亚洲精品一区二区三区网址 | 99热免费精品 | 亚洲一区二区三区一品精 | 亚洲自拍第二页 | 波多野结衣在线一区 | 国产欧美日韩中文久久 | 欧美成人一区二免费视频 | 日韩精品成人a在线观看 | 中文在线免费不卡视频 | 日本操比 | 在线视频不卡国产在线视频不卡 | 99热最新网站地址获取 | 亚洲国产精久久久久久久春色 | 国产成人在线视频网站 | www神马我不卡影院免费观看 | 伊人手机在线视频 | 99热这里只有精品首页精品 | 久久都是精品 | 在线看污网站 | 草久在线观看 | 老子影院无码午夜伦不卡 | 久久精品国产6699国产精 | 国产在线观看午夜不卡 | 国产亚洲新品一区二区 | 久久国产精品久久国产片 | 91激情视频| 欧美成人免费看片一区 | 亚洲精品久久成人福利 | 色妞www精品视频 | 欧美爽爽 | 日本高清视频一区二区三区 | 日韩欧美亚州 | 久久最新精品 | 欧美亚洲图区 | 国产二三区 | 久久久久蜜桃 | 婷婷综合久久 | 亚洲国产成人久久一区www | 五月激情五月婷婷 | 麻豆精品成人免费国产片 |