<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      流弊的JSON數(shù)據(jù)模型框架

      https://github.com/jsonmodel/jsonmodel

      版本 1.3.0


      如果你喜歡JSONModel,并且使用了它,請你:

      • star一下

      • 給我一些反饋. 多謝!


       
      JSONModel for iOS and OSX

      JSONModel 是一個(gè)能夠快速巧妙的創(chuàng)建數(shù)據(jù)模型的庫. 你可以在 iOS or OSX APP中使用它.

      JSONModel 自動檢查JOSN模型和結(jié)構(gòu)體, 徹底的減少你的代碼量.

       
       

      添加JSONModel到你的項(xiàng)目中

      要求

      • 支持持ARC; iOS 5.0+ / OSX 10.7+
      • SystemConfiguration.framework

      as: 1) 源文件

      1.下載JSONModel.zip文件
      2.將它拷貝到你的項(xiàng)目中
      3.導(dǎo)入SystemConfiguration.framework框架

      or 2)使用 CocoaPods

      pod 'JSONModel'
      

      如果你想關(guān)于CocoaPods了解更多,請參考這個(gè)簡單的教程.

      or 3) 使用 Carthage

      在你的項(xiàng)目的Cartfile添加JSONModel:

      github "jsonmodel/jsonmodel"
      

      文檔

      你可以查看在線閱讀文檔: http://cocoadocs.org/docsets/JSONModel


      基本使用

      涉想你的JSON數(shù)據(jù)像這樣:

      { "id": "10", "country": "Germany", "dialCode": 49, "isInEurope": true }
      
      • 為你的數(shù)據(jù)模型創(chuàng)建一個(gè)Objective-C的類,繼承自JSONModel.
      • 將JSON中的keys在.h文件中聲明為屬性:
      #import "JSONModel.h"
      
      @interface CountryModel : JSONModel
      
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString* country;
      @property (strong, nonatomic) NSString* dialCode;
      @property (assign, nonatomic) BOOL isInEurope;
      
      @end
      

      在.m文件中不需要做任何事情.

      • 用數(shù)據(jù)初始化你的model:
      #import "CountryModel.h"
      ...
      
      NSString* json = (fetch here JSON from Internet) ...
      NSError* err = nil;
      CountryModel* country = [[CountryModel alloc] initWithString:json error:&err];
      
      

      如果傳過來的JSON合法,你所定義的所有的屬性都會與該JSON的值想對應(yīng),甚至JSONModel會嘗試去轉(zhuǎn)換數(shù)據(jù)為你期望的類型,如上所示:

      • 轉(zhuǎn)換id,從字符串轉(zhuǎn)換為int
      • 只需要拷貝一下country的值
      • 轉(zhuǎn)換diaCode,從number轉(zhuǎn)換為字符串
      • 最后一個(gè)是將isInEurope轉(zhuǎn)換為BOOL屬性

      所以,你所需要做的就是將你的屬性定義為期望的類型.


      在線教程

      官方網(wǎng)站: http://www.jsonmodel.com

      在線文檔: http://jsonmodel.com/docs/

      傻瓜教程:


      舉個(gè)栗子

      命名自動匹配

      {
        "id": "123",
        "name": "Product name",
        "price": 12.95
      }
      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString* name;
      @property (assign, nonatomic) float price;
      @end
      
      @implementation ProductModel
      @end
      

      模型嵌套 (模型包含其他模型)

      {
        "order_id": 104,
        "total_price": 13.45,
        "product" : {
          "id": "123",
          "name": "Product name",
          "price": 12.95
        }
      }
      
      @interface OrderModel : JSONModel
      @property (assign, nonatomic) int order_id;
      @property (assign, nonatomic) float total_price;
      @property (strong, nonatomic) ProductModel* product;
      @end
      
      @implementation OrderModel
      @end
      

      模型集合

      {
        "order_id": 104,
        "total_price": 103.45,
        "products" : [
          {
            "id": "123",
            "name": "Product #1",
            "price": 12.95
          },
          {
            "id": "137",
            "name": "Product #2",
            "price": 82.95
          }
        ]
      }
      
      @protocol ProductModel
      @end
      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString* name;
      @property (assign, nonatomic) float price;
      @end
      
      @implementation ProductModel
      @end
      
      @interface OrderModel : JSONModel
      @property (assign, nonatomic) int order_id;
      @property (assign, nonatomic) float total_price;
      @property (strong, nonatomic) NSArray<ProductModel>* products;
      @end
      
      @implementation OrderModel
      @end
      

      注意: 尖括號后 <code>NSArray</code> 包含一個(gè)協(xié)議. 這跟Objective-C原生的泛型不是一個(gè)概念. 他們不會沖突, 但對于JSONModel來說,協(xié)議必須在一個(gè)地方聲明.

      key映射

      {
        "order_id": 104,
        "order_details" : [
          {
            "name": "Product#1",
            "price": {
              "usd": 12.95
            }
          }
        ]
      }
      
      @interface OrderModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (assign, nonatomic) float price;
      @property (strong, nonatomic) NSString* productName;
      @end
      
      @implementation OrderModel
      
      +(JSONKeyMapper*)keyMapper
      {
        return [[JSONKeyMapper alloc] initWithDictionary:@{
          @"order_id": @"id",
          @"order_details.name": @"productName",
          @"order_details.price.usd": @"price"
        }];
      }
      
      @end
      

      設(shè)置全局鍵映射(應(yīng)用于所有model)

      [JSONModel setGlobalKeyMapper:[
          [JSONKeyMapper alloc] initWithDictionary:@{
            @"item_id":@"ID",
            @"item.name": @"itemName"
         }]
      ];
      

      設(shè)置下劃線自動轉(zhuǎn)駝峰

      {
        "order_id": 104,
        "order_product" : @"Product#1",
        "order_price" : 12.95
      }
      
      @interface OrderModel : JSONModel
      
      @property (assign, nonatomic) int orderId;
      @property (assign, nonatomic) float orderPrice;
      @property (strong, nonatomic) NSString* orderProduct;
      
      @end
      
      @implementation OrderModel
      
      +(JSONKeyMapper*)keyMapper
      {
        return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];
      }
      
      @end
      

      可選屬性 (就是說這個(gè)屬性可以為null或者為空)

      {
        "id": "123",
        "name": null,
        "price": 12.95
      }
      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString<Optional>* name;
      @property (assign, nonatomic) float price;
      @property (strong, nonatomic) NSNumber<Optional>* uuid;
      @end
      
      @implementation ProductModel
      @end
      

      忽略屬性 (就是完全忽略這個(gè)屬性)

      {
        "id": "123",
        "name": null
      }
      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString<Ignore>* customProperty;
      @end
      
      @implementation ProductModel
      @end
      

      設(shè)置所有的屬性為可選(所有屬性值可以為空)

      @implementation ProductModel
      +(BOOL)propertyIsOptional:(NSString*)propertyName
      {
        return YES;
      }
      @end
      

      使用JSONModel自帶的 HTTP 請求

      
      //add extra headers
      [[JSONHTTPClient requestHeaders] setValue:@"MySecret" forKey:@"AuthorizationToken"];
      
      //make post, get requests
      [JSONHTTPClient postJSONFromURLWithString:@"http://mydomain.com/api"
                                         params:@{@"postParam1":@"value1"}
                                     completion:^(id json, JSONModelError *err) {
      
                                         //check err, process json ...
      
                                     }];
      

      將model轉(zhuǎn)化為字典或者json格式的字符串

      
      ProductModel* pm = [[ProductModel alloc] initWithString:jsonString error:nil];
      pm.name = @"Changed Name";
      
      //convert to dictionary
      NSDictionary* dict = [pm toDictionary];
      
      //convert to text
      NSString* string = [pm toJSONString];
      
      

      自定義數(shù)據(jù)的轉(zhuǎn)換

      
      @implementation JSONValueTransformer (CustomTransformer)
      
      - (NSDate *)NSDateFromNSString:(NSString*)string {
          NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
          [formatter setDateFormat:APIDateFormat];
          return [formatter dateFromString:string];
      }
      
      - (NSString *)JSONObjectFromNSDate:(NSDate *)date {
          NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
          [formatter setDateFormat:APIDateFormat];
          return [formatter stringFromDate:date];
      }
      
      @end
      
      

      自定義處理指定的屬性

      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString* name;
      @property (assign, nonatomic) float price;
      @property (strong, nonatomic) NSLocale *locale;
      @end
      
      @implementation ProductModel
      
      // Convert and assign the locale property
      - (void)setLocaleWithNSString:(NSString*)string {
          self.locale = [NSLocale localeWithLocaleIdentifier:string];
      }
      
      - (NSString *)JSONObjectForLocale {
          return self.locale.localeIdentifier;
      }
      
      @end
      
      

      自定義JSON校驗(yàn)

      
      @interface ProductModel : JSONModel
      @property (assign, nonatomic) int id;
      @property (strong, nonatomic) NSString* name;
      @property (assign, nonatomic) float price;
      @property (strong, nonatomic) NSLocale *locale;
      @property (strong, nonatomic) NSNumber <Ignore> *minNameLength;
      @end
      
      @implementation ProductModel
      
      - (BOOL)validate:(NSError *__autoreleasing *)error {
          BOOL valid = [super validate:error];
      
          if (self.name.length < self.minNameLength.integerValue) {
              *error = [NSError errorWithDomain:@"me.mycompany.com" code:1 userInfo:nil];
              valid = NO;
          }
      
          return valid;
      }
      
      @end
      
      
      • 錯(cuò)誤處理
      • 自定義數(shù)據(jù)校驗(yàn)
      • 自動比較和相等判斷
      • 更多.

       

      posted on 2019-04-27 11:09  chennet  閱讀(1979)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 呈贡县| 亚洲av无码专区在线亚| 丁香五月天综合缴情网| 视频一区视频二区制服丝袜 | 国产成人精品2021欧美日韩| 麻豆精品一区二正一三区| 亚洲综合国产激情另类一区| 日韩中文字幕高清有码| 一区二区偷拍美女撒尿视频| 一区二区三区av天堂| 无码日韩做暖暖大全免费不卡| 亚洲人成线无码7777| 欧美精品一区二区三区在线观看| 宝贝腿开大点我添添公口述视频 | 亚洲日韩图片专区第1页| 精品亚洲综合一区二区三区| 国产一区二区三区精品综合 | 抚州市| 亚洲精品第一页中文字幕| 日韩在线视频观看免费网站| 久久精品中文字幕少妇| 国产蜜臀精品一区二区三区| 少妇人妻偷人精品免费| 国产一区二区在线影院| 亚洲人成网网址在线看| 亚洲深深色噜噜狠狠网站| 国产麻豆精品av在线观看| 97人妻无码一区| 国产亚洲精品久久久久5区| 九色综合久99久久精品| 日本一区二区三区专线| 国日韩精品一区二区三区| 黑人玩弄人妻中文在线| 日本中文字幕一区二区三| 国产蜜臀在线一区二区三区| 国产精品视频白浆免费视频| 噜噜噜噜私人影院| 国产女人被狂躁到高潮小说| 亚洲日本乱码熟妇色精品| 又色又爽又黄的视频网站| 日本高清在线观看WWW色|