iOS JSOnModel使用

2885 ワード

JSOnModelは、jsonトランスモデルのサードパーティオープンソースライブラリです.サーバにリクエストを送信すると、JSOnModelでデータをModelに変換すると便利です.
pod 'JSONModel'

基本的な使い方
例えばこのjsonデータ
{
   "first" : 1,
   "second": 2,
   "third" : 3,
   "fourth": 4
}

次のモデルを定義します.mでは何も処理しなくてもよい
#import 

@interface OneModel : JSONModel

@property (nonatomic,assign)int     first;
@property (nonatomic,assign)double  second;
@property (nonatomic,assign)float   third;
@property (nonatomic,copy)NSString* fourth;

@end

jsonデータから、サーバが私たちに与えたデータ型はすべて一致していることがわかりますが、私たちが定義したデータモデルにはint、double、float、NSStringの4種類があり、私たちは何の処理も必要ありません.JSOnModelは自動的に変換してくれます.
JSONValueTransformer          

NSMutableString  NSString
NSMutableArray  NSArray
NS(Mutable)Array  NSDictionary
NSSet  NSArray
BOOL  number/string
string  number
string  url
string  time zone
string  date
number  date
  • JSOnModelを使用する場合は、必要なサーバ属性が返されているかどうかを確認する必要はありません.JSOnModelのinitWithDictionaryメソッドは自動的にチェックして処理します.
  • 有効性チェックは、指定したサーバが返すフィールドが返されず、必要である場合、以下のように書くと例外が投げ出されます.
  • //this property is required
    @property (nonatomic,copy) NSString* fourth;
               。
    

    一般的に、サーバの値が返されていないためにプログラムをクラッシュさせたくないので、キーワードOptionalを追加します.こんな風に
    @property (nonatomic,copy) NSString* fourth;
    

    各プロパティを追加したくない場合は、mファイルへの書き換え方法
    +(BOOL)propertyIsOptional:(NSString *)propertyName{
            return  YES;
    }
    

    modelに値を割り当てるには、次の方法を使用します.
    //  responseObject[@"data"]            
    OneModel *model = [[OneModel alloc]initWithDictionary:responseObject[@"data"] error:nil];
    

    得られたモデルについては、次のような方法で辞書に変換することができます.
    -(NSDictionary*)toDictionary;
    

    モデルネスト
    #import 
    #import "TwoModel.h"
    
    @interface OneModel : JSONModel
    
    @property (nonatomic,assign)int     first;
    @property (nonatomic,assign)double  second;
    @property (nonatomic,assign)float   third;
    @property (nonatomic,copy)NSString* fourth;
    @property (nonatomic,strong)TwoModel* twoModel;
    
    @end
    

    モデル結合
    #import 
    
    @protocol OneModel//       
    @end
    @interface OneModel : JSONModel
    
    @property (nonatomic,assign)int     first;
    @property (nonatomic,assign)double  second;
    @property (nonatomic,assign)float   third;
    @property (nonatomic,copy)NSString* fourth;
    
    @end
    
    @interface ThreeModel : JSONModel
    
    @property (nonatomic,assign)NSString* id;
    @property (nonatomic,strong)NSArray* one;
    
    @end
    
    #import "OneModel.h"
    
    @implementation OneModel
    @end
    
    @implementation ThreeModel
    @end
    

    ここに他人のもっと詳しい説明を添付します.