以下是对MJExtension部分使用方法进行归整
#pragma mark - 转换为JSON
/**
* 转换为JSON Data
*/
- (NSData *)mj_JSONData;
/**
* 转换为字典或者数组
*/
- (id)mj_JSONObject; id resultData = [responseObject mj_JSONObject];
/**
* 转换为JSON 字符串
*/
- (NSString *)mj_JSONString; NSString *str=requestModel.mj_JSONString;
1. 对NSLog的优化,解决 调试时,打印模型,只打印出内存地址的问题
使用方法:在模型类的.m文件中,引用#import "MJExtension.h"
在@implementation 和 @end之间,写上MJLogAllIvrs
2. 对NSCoding的优化,不用再写繁琐的解档和归档方法了
使用方法:在模型类的.m文件中,引用#import "MJExtension.h"
在@implementation 和 @end之间,写上MJCodingImplementation
3. Plist → 模型数组
控制器中引用#import "MJExtension.h"
模型数组 = [模型类名 objectArrayWithFilename:
[[NSBundle mainBundle] pathForResource:@"文件名.plist" ofType:nil]];
/**
* 通过plist来创建一个模型
* @param filename 文件名(仅限于mainBundle中的文件)
* @return 新建的对象
*/
+ (instancetype)mj_objectWithFilename:(NSString *)filename;
/**
* 通过plist来创建一个模型
* @param file 文件全路径
* @return 新建的对象
*/
+ (instancetype)mj_objectWithFile:(NSString *)file;
4.1字典 转 模型对象
HandleModel * model = [HandleModel mj_objectWithKeyValues:jsonObject];
/**
* @param keyValues 字典(可以是NSDictionary、NSData、NSString)
* @return 新建的对象
*/
+ (instancetype)mj_objectWithKeyValues:(id)keyValues;
4.2.模型 转 字典
/**
* 将模型转成字典
* @return 字典
*/
- (NSMutableDictionary *)mj_keyValues;
- (NSMutableDictionary *)mj_keyValuesWithKeys:(NSArray *)keys;
- (NSMutableDictionary *)mj_keyValuesWithIgnoredKeys:(NSArray *)ignoredKeys;
5.1字典数组 转 模型数组
NSArray *arr = [BaseDictModel mj_objectArrayWithKeyValuesArray:data[type]];
/**
* @param keyValuesArray 字典数组(可以是NSDictionary、NSData、NSString)
* @return 模型数组
*/
+ (NSMutableArray *)mj_objectArrayWithKeyValuesArray:(id)keyValuesArray;
5.2 模型数组 转 字典数组
/**
* 通过模型数组来创建一个字典数组
* @param objectArray 模型数组
* @return 字典数组
*/
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray;
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray keys:(NSArray *)keys;
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray ignoredKeys:(NSArray *)ignoredKeys;
以下方法使用方法:
首先在模型类.m文件中,引入#import "MJExtension.h"
然后在 @implementation 和 @end之间 写上
对象属性有数组 需要声明
@property (nonatomic,strong) NSArray
//数组声明(旧版)
+ (NSDictionary *)objectClassInArray{
return @{@"list" : [QuestionHelpInfoModel class]};
}
//数组声明(新版)
+ (NSDictionary *)mj_objectClassInArray{
return @{@"stuarray" : @"Student"};//前边,是属性数组的名字,后边就是类名
}
对象属性关键字替换 需要声明
@property (copy, nonatomic) NSString *tid;
//替换关键字声明
+ (NSDictionary *)replacedKeyFromPropertyName {
return @{
@"tid":@"id",
};
}
只有这个数组中的属性名才允许进行字典和模型的转换
+ (NSArray *)mj_allowedPropertyNames;
这个数组中的属性名将会被忽略:不进行字典和模型的转换
+ (NSArray *)mj_ignoredPropertyNames;
当字典转模型完毕时调用
- (void)mj_keyValuesDidFinishConvertingToObject;
当模型转字典完毕时调用
- (void)mj_objectDidFinishConvertingToKeyValues;