// // NSObject+MJProperty.h // MJExtensionExample // // Created by MJ Lee on 15/4/17. // Copyright (c) 2015年 小码哥. All rights reserved. // #import #import "MJExtensionConst.h" @class MJProperty; /** * 遍历成员变量用的block * * @param property 成员的包装对象 * @param stop YES代表停止遍历,NO代表继续遍历 */ typedef void (^MJPropertiesEnumeration)(MJProperty *property, BOOL *stop); /** 将属性名换为其他key去字典中取值 */ typedef NSDictionary * (^MJReplacedKeyFromPropertyName)(); typedef NSString * (^MJReplacedKeyFromPropertyName121)(NSString *propertyName); /** 数组中需要转换的模型类 */ typedef NSDictionary * (^MJObjectClassInArray)(); /** 用于过滤字典中的值 */ typedef id (^MJNewValueFromOldValue)(id object, id oldValue, MJProperty *property); /** * 成员属性相关的扩展 */ @interface NSObject (MJProperty) #pragma mark - 遍历 /** * 遍历所有的成员 */ + (void)mj_enumerateProperties:(MJPropertiesEnumeration)enumeration; #pragma mark - 新值配置 /** * 用于过滤字典中的值 * * @param newValueFormOldValue 用于过滤字典中的值 */ + (void)mj_setupNewValueFromOldValue:(MJNewValueFromOldValue)newValueFormOldValue; + (id)mj_getNewValueFromObject:(__unsafe_unretained id)object oldValue:(__unsafe_unretained id)oldValue property:(__unsafe_unretained MJProperty *)property; #pragma mark - key配置 /** * 将属性名换为其他key去字典中取值 * * @param replacedKeyFromPropertyName 将属性名换为其他key去字典中取值 */ + (void)mj_setupReplacedKeyFromPropertyName:(MJReplacedKeyFromPropertyName)replacedKeyFromPropertyName; /** * 将属性名换为其他key去字典中取值 * * @param replacedKeyFromPropertyName121 将属性名换为其他key去字典中取值 */ + (void)mj_setupReplacedKeyFromPropertyName121:(MJReplacedKeyFromPropertyName121)replacedKeyFromPropertyName121; #pragma mark - array model class配置 /** * 数组中需要转换的模型类 * * @param objectClassInArray 数组中需要转换的模型类 */ + (void)mj_setupObjectClassInArray:(MJObjectClassInArray)objectClassInArray; @end @interface NSObject (MJPropertyDeprecated_v_2_5_16) + (void)enumerateProperties:(MJPropertiesEnumeration)enumeration MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); + (void)setupNewValueFromOldValue:(MJNewValueFromOldValue)newValueFormOldValue MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); + (id)getNewValueFromObject:(__unsafe_unretained id)object oldValue:(__unsafe_unretained id)oldValue property:(__unsafe_unretained MJProperty *)property MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); + (void)setupReplacedKeyFromPropertyName:(MJReplacedKeyFromPropertyName)replacedKeyFromPropertyName MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); + (void)setupReplacedKeyFromPropertyName121:(MJReplacedKeyFromPropertyName121)replacedKeyFromPropertyName121 MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); + (void)setupObjectClassInArray:(MJObjectClassInArray)objectClassInArray MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); @end