手を取ってMJExtensionの使い方を教えてあげる
5231 ワード
まずMJExtensionのインストールですが、cocoapodsをお勧めします.cocoapodsがまだインストールされていない場合は、ここに移動してくださいhttps://www.jianshu.com/p/b4efe9fbc6e4インストール後、(ここでは、どのようにcocoapodsでサードパーティライブラリをインストールするかは、言うまでもない)、githubの著者はすでによく書いていますが、ここでは、最も簡単な記録から、Personのmodel(NSObjectを継承する)を定義します.hファイル定義属性
辞書(json文字列は同じ)でmodelを生成する
ネットワークがiOSのキーワードを返す値、または、返されるキーを使いたくない場合は、マッピング関係を変更する必要があります.もし、返されるキーがnameであれば、personの中で、私はpersonNameを使いたいと思っています.そうすることができます.
パーソンのm内、マッピング関係を変更
次の使い方は、前と同じです.もし、戻ってきたデータをさらに加工したいなら、例えば、タイムスタンプを返したいのですが、モデルを生成するときに、あなたが望んでいるフォーマットに変換したいなら、Personが例を挙げます.
Personのmファイル内
便利ではないでしょうか.ははは、注意して、この方法、またいくつかの判断をすることができて、例えば、返す値はnilで、どのように処理して、返す値は予想していないで、どのように処理して、すべて判断することができます!!
以上のモデルを変換する方法はすべてこれです
---------分割線--------では、モデルの中にモデルがある場合にStudentのモデルを新規作成します
Personでは、Studentのプロパティを追加します.
Personのmではどのような処理を行う必要はありません.例:
ここで,デフォルトリクエストが返すkeyはstuであり,stuでなければマッピング関係を変更する必要があり,上のように参照できる.
次の場合、Personには配列があり、配列の中にはStudioオブジェクトが入っています.
Personのm奥
使用法は次のとおりです.
マッピング関係を変えて、上と同じです!!
もう一つの使いやすい方法は、要求が戻ってきたのが配列であれば、モデルの配列に変換したいと思っています.もちろん、for inサイクルで配列の中の各要素を遍歴してからモデルに変換し、変換されたモデルを1つの配列で保存することができます.ここでは、簡単な方法があります.
これはとても便利ではありませんか、はは、よし、楽しい游びに行きましょう!!
ps:model辞書を回して、必要であればgithubの上のチュートリアルを見て、住所:https://github.com/CoderMJLee/MJExtensionまるでso easy!!
#import
#import
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property(nonatomic, assign) NSInteger age;
@end
辞書(json文字列は同じ)でmodelを生成する
NSDictionary *dic = @{@"name":@"revon", @"age":@"19"};
Person *p1 = [Person mj_objectWithKeyValues:dic];
ネットワークがiOSのキーワードを返す値、または、返されるキーを使いたくない場合は、マッピング関係を変更する必要があります.もし、返されるキーがnameであれば、personの中で、私はpersonNameを使いたいと思っています.そうすることができます.
#import
#import
@interface Person : NSObject
@property (nonatomic, strong) NSString *personName;
@property(nonatomic, assign) NSInteger age;
@end
パーソンのm内、マッピング関係を変更
+ (NSDictionary *)mj_replacedKeyFromPropertyName{
return @{
@"personName" : @"persno"// key, key
};
}
次の使い方は、前と同じです.もし、戻ってきたデータをさらに加工したいなら、例えば、タイムスタンプを返したいのですが、モデルを生成するときに、あなたが望んでいるフォーマットに変換したいなら、Personが例を挙げます.
#import
#import
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSString *birthday;
@end
Personのmファイル内
- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property{
if ([property.name isEqualToString:@"birthday"]) {
if (oldValue) {
//
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone timeZoneWithName:@"shanghai"];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy MM dd HH:mm"];
NSDate* date = [NSDate dateWithTimeIntervalSince1970:[oldValue doubleValue]];
NSString* dateString = [formatter stringFromDate:date];
return dateString;
}
}
else {
return @" ";
}
return oldValue;
}
便利ではないでしょうか.ははは、注意して、この方法、またいくつかの判断をすることができて、例えば、返す値はnilで、どのように処理して、返す値は予想していないで、どのように処理して、すべて判断することができます!!
以上のモデルを変換する方法はすべてこれです
mj_objectWithKeyValues:
---------分割線--------では、モデルの中にモデルがある場合にStudentのモデルを新規作成します
#import
@interface Student : NSObject
@property (nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger age;
@end
Personでは、Studentのプロパティを追加します.
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSString *birthday;
@property (nonatomic, strong) Student *stu;
@end
Personのmではどのような処理を行う必要はありません.例:
NSDictionary *dic = @{
@"add" : @" ",
@"stu" : @{
@"name" : @"revon",
@"age" : @"10"
}
};
Person *p = [Person mj_objectWithKeyValues:dic];
NSLog(@"----- %@", p.stu.name);
ここで,デフォルトリクエストが返すkeyはstuであり,stuでなければマッピング関係を変更する必要があり,上のように参照できる.
次の場合、Personには配列があり、配列の中にはStudioオブジェクトが入っています.
#import
#import
#import "Student.h"
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSString *birthday;
@property (nonatomic, strong) Student *stu;
@property (nonatomic, strong) NSArray *stuarray;
@end
Personのm奥
+ (NSDictionary *)mj_objectClassInArray{
return @{@"stuarray" : @"Student"};// , ,
}
使用法は次のとおりです.
NSDictionary *dic = @{@"add" : @" ",
@"stuarray" : @[@{@"name" : @"revon1", @"age" : @"18"}, @{@"name" : @"revon2", @"age" : @"140"}]};
Person *p1 = [Person mj_objectWithKeyValues:dic];
for (Student *st in p1.stuarray) {
NSLog(@"--- name is %@", st.name);
}
マッピング関係を変えて、上と同じです!!
もう一つの使いやすい方法は、要求が戻ってきたのが配列であれば、モデルの配列に変換したいと思っています.もちろん、for inサイクルで配列の中の各要素を遍歴してからモデルに変換し、変換されたモデルを1つの配列で保存することができます.ここでは、簡単な方法があります.
resultArray = [Model mj_objectArrayWithKeyValuesArray:array];
これはとても便利ではありませんか、はは、よし、楽しい游びに行きましょう!!
ps:model辞書を回して、必要であればgithubの上のチュートリアルを見て、住所:https://github.com/CoderMJLee/MJExtensionまるでso easy!!