//
|
// NSObject+MJKeyValue.h
|
// MJExtension
|
//
|
// Created by mj on 13-8-24.
|
// Copyright (c) 2013年 小码哥. All rights reserved.
|
//
|
|
#import <Foundation/Foundation.h>
|
#import "MJExtensionConst.h"
|
#import <CoreData/CoreData.h>
|
#import "MJProperty.h"
|
|
/**
|
* KeyValue协议
|
*/
|
@protocol MJKeyValue <NSObject>
|
@optional
|
/**
|
* 只有这个数组中的属性名才允许进行字典和模型的转换
|
*/
|
+ (NSArray *)mj_allowedPropertyNames;
|
|
/**
|
* 这个数组中的属性名将会被忽略:不进行字典和模型的转换
|
*/
|
+ (NSArray *)mj_ignoredPropertyNames;
|
|
/**
|
* 将属性名换为其他key去字典中取值
|
*
|
* @return 字典中的key是属性名,value是从字典中取值用的key
|
*/
|
+ (NSDictionary *)mj_replacedKeyFromPropertyName;
|
|
/**
|
* 将属性名换为其他key去字典中取值
|
*
|
* @return 从字典中取值用的key
|
*/
|
+ (id)mj_replacedKeyFromPropertyName121:(NSString *)propertyName;
|
|
/**
|
* 数组中需要转换的模型类
|
*
|
* @return 字典中的key是数组属性名,value是数组中存放模型的Class(Class类型或者NSString类型)
|
*/
|
+ (NSDictionary *)mj_objectClassInArray;
|
|
/**
|
* 旧值换新值,用于过滤字典中的值
|
*
|
* @param oldValue 旧值
|
*
|
* @return 新值
|
*/
|
- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property;
|
|
/**
|
* 当字典转模型完毕时调用
|
*/
|
- (void)mj_keyValuesDidFinishConvertingToObject;
|
|
/**
|
* 当模型转字典完毕时调用
|
*/
|
- (void)mj_objectDidFinishConvertingToKeyValues;
|
@end
|
|
@interface NSObject (MJKeyValue) <MJKeyValue>
|
#pragma mark - 类方法
|
/**
|
* 字典转模型过程中遇到的错误
|
*/
|
+ (NSError *)mj_error;
|
|
/**
|
* 模型转字典时,字典的key是否参考replacedKeyFromPropertyName等方法(父类设置了,子类也会继承下来)
|
*/
|
+ (void)mj_referenceReplacedKeyWhenCreatingKeyValues:(BOOL)reference;
|
|
#pragma mark - 对象方法
|
/**
|
* 将字典的键值对转成模型属性
|
* @param keyValues 字典(可以是NSDictionary、NSData、NSString)
|
*/
|
- (instancetype)mj_setKeyValues:(id)keyValues;
|
|
/**
|
* 将字典的键值对转成模型属性
|
* @param keyValues 字典(可以是NSDictionary、NSData、NSString)
|
* @param context CoreData上下文
|
*/
|
- (instancetype)mj_setKeyValues:(id)keyValues context:(NSManagedObjectContext *)context;
|
|
/**
|
* 将模型转成字典
|
* @return 字典
|
*/
|
- (NSMutableDictionary *)mj_keyValues;
|
- (NSMutableDictionary *)mj_keyValuesWithKeys:(NSArray *)keys;
|
- (NSMutableDictionary *)mj_keyValuesWithIgnoredKeys:(NSArray *)ignoredKeys;
|
|
/**
|
* 通过模型数组来创建一个字典数组
|
* @param objectArray 模型数组
|
* @return 字典数组
|
*/
|
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray;
|
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray keys:(NSArray *)keys;
|
+ (NSMutableArray *)mj_keyValuesArrayWithObjectArray:(NSArray *)objectArray ignoredKeys:(NSArray *)ignoredKeys;
|
|
#pragma mark - 字典转模型
|
/**
|
* 通过字典来创建一个模型
|
* @param keyValues 字典(可以是NSDictionary、NSData、NSString)
|
* @return 新建的对象
|
*/
|
+ (instancetype)mj_objectWithKeyValues:(id)keyValues;
|
|
/**
|
* 通过字典来创建一个CoreData模型
|
* @param keyValues 字典(可以是NSDictionary、NSData、NSString)
|
* @param context CoreData上下文
|
* @return 新建的对象
|
*/
|
+ (instancetype)mj_objectWithKeyValues:(id)keyValues context:(NSManagedObjectContext *)context;
|
|
/**
|
* 通过plist来创建一个模型
|
* @param filename 文件名(仅限于mainBundle中的文件)
|
* @return 新建的对象
|
*/
|
+ (instancetype)mj_objectWithFilename:(NSString *)filename;
|
|
/**
|
* 通过plist来创建一个模型
|
* @param file 文件全路径
|
* @return 新建的对象
|
*/
|
+ (instancetype)mj_objectWithFile:(NSString *)file;
|
|
#pragma mark - 字典数组转模型数组
|
/**
|
* 通过字典数组来创建一个模型数组
|
* @param keyValuesArray 字典数组(可以是NSDictionary、NSData、NSString)
|
* @return 模型数组
|
*/
|
+ (NSMutableArray *)mj_objectArrayWithKeyValuesArray:(id)keyValuesArray;
|
|
/**
|
* 通过字典数组来创建一个模型数组
|
* @param keyValuesArray 字典数组(可以是NSDictionary、NSData、NSString)
|
* @param context CoreData上下文
|
* @return 模型数组
|
*/
|
+ (NSMutableArray *)mj_objectArrayWithKeyValuesArray:(id)keyValuesArray context:(NSManagedObjectContext *)context;
|
|
/**
|
* 通过plist来创建一个模型数组
|
* @param filename 文件名(仅限于mainBundle中的文件)
|
* @return 模型数组
|
*/
|
+ (NSMutableArray *)mj_objectArrayWithFilename:(NSString *)filename;
|
|
/**
|
* 通过plist来创建一个模型数组
|
* @param file 文件全路径
|
* @return 模型数组
|
*/
|
+ (NSMutableArray *)mj_objectArrayWithFile:(NSString *)file;
|
|
#pragma mark - 转换为JSON
|
/**
|
* 转换为JSON Data
|
*/
|
- (NSData *)mj_JSONData;
|
/**
|
* 转换为字典或者数组
|
*/
|
- (id)mj_JSONObject;
|
/**
|
* 转换为JSON 字符串
|
*/
|
- (NSString *)mj_JSONString;
|
@end
|
|
@interface NSObject (MJKeyValueDeprecated_v_2_5_16)
|
- (instancetype)setKeyValues:(id)keyValue MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (instancetype)setKeyValues:(id)keyValues error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (instancetype)setKeyValues:(id)keyValues context:(NSManagedObjectContext *)context MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (instancetype)setKeyValues:(id)keyValues context:(NSManagedObjectContext *)context error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (void)referenceReplacedKeyWhenCreatingKeyValues:(BOOL)reference MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValues MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValuesWithError:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValuesWithKeys:(NSArray *)keys MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValuesWithKeys:(NSArray *)keys error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValuesWithIgnoredKeys:(NSArray *)ignoredKeys MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSMutableDictionary *)keyValuesWithIgnoredKeys:(NSArray *)ignoredKeys error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray keys:(NSArray *)keys MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray keys:(NSArray *)keys error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray ignoredKeys:(NSArray *)ignoredKeys MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)keyValuesArrayWithObjectArray:(NSArray *)objectArray ignoredKeys:(NSArray *)ignoredKeys error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithKeyValues:(id)keyValues MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithKeyValues:(id)keyValues error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithKeyValues:(id)keyValues context:(NSManagedObjectContext *)context MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithKeyValues:(id)keyValues context:(NSManagedObjectContext *)context error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithFilename:(NSString *)filename MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithFilename:(NSString *)filename error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithFile:(NSString *)file MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (instancetype)objectWithFile:(NSString *)file error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithKeyValuesArray:(id)keyValuesArray MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithKeyValuesArray:(id)keyValuesArray error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithKeyValuesArray:(id)keyValuesArray context:(NSManagedObjectContext *)context MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithKeyValuesArray:(id)keyValuesArray context:(NSManagedObjectContext *)context error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithFilename:(NSString *)filename MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithFilename:(NSString *)filename error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithFile:(NSString *)file MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
+ (NSMutableArray *)objectArrayWithFile:(NSString *)file error:(NSError **)error MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSData *)JSONData MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (id)JSONObject MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
- (NSString *)JSONString MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
|
@end
|