IMOBFDataModel.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // IJIMDataModel.h
  3. // Jimu
  4. //
  5. // Created by 冯鸿杰 on 17/2/10.
  6. // Copyright © 2017年 Mob. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /**
  10. 数据模型协议
  11. */
  12. @protocol IMOBFDataModel <NSObject>
  13. @required
  14. /**
  15. 初始化数据模型
  16. @param dict 初始化数据
  17. @return 数据模型
  18. */
  19. - (instancetype)initWithDict:(NSDictionary *)dict;
  20. /**
  21. 设置数据
  22. @param data 数据
  23. @param key 名称
  24. */
  25. - (void)set:(id)data key:(NSString *)key;
  26. /**
  27. 获取数据
  28. @param key 名称
  29. */
  30. - (id)get:(NSString *)key;
  31. /**
  32. 返回一个字典结构
  33. @return 字段数据对象
  34. */
  35. - (NSDictionary *)dictionaryValue;
  36. /**
  37. 返回字段映射字典
  38. 说明:类如果实现此方法,并返回映射字典,在使用initWithDict初始化时,则会按照映射查找属性;key 为真正想要设定的、存在的属性 ,value为需要映射的字段
  39. @return 字段映射字典
  40. */
  41. + (NSDictionary <NSString *, NSString *> *)propertyMappingDictionary;
  42. /**
  43. 当类中有属性为数组,且数组元素同为MOBFDataModel时,应该置制定该属性属性及其元素类型
  44. 例如有 @property NSArray <OtherDataModel *> *array;
  45. 应主动实现本方法,并返回 @{@"array" : @"OtherDataModel"}
  46. @return 映射配置
  47. */
  48. + (NSDictionary <NSString *, NSString *> *)elementTypeOfCollectionPropertyDictionary;
  49. /**
  50. 当属性定义类型不支持从原始数据直接转换时触发此方法,该方法默认返回nil,表示不进行转换
  51. @param rawData 原始数据
  52. @param targetType 目标类型
  53. @param propertyName 属性名称
  54. @return 目标类型对象
  55. */
  56. + (id)unsupportTypeWithRawData:(id)rawData
  57. targetType:(Class)targetType
  58. propertyName:(NSString *)propertyName;
  59. /**
  60. 当设置属性对象不支持转化为原始数据时触发此方法,默认返回nil,表示不进行转换
  61. @param object 对象
  62. @param propertyName 属性名称
  63. @return 原始数据,仅包含NSDictionary、NSArray、NSString、NSNumber类型的返回。
  64. */
  65. + (id)rawDataWithUnsupportTypeObject:(id)object
  66. propertyName:(NSString *)propertyName;
  67. @end