iOS 轻量级的数据转模型工具,比你想象中的更简单、更便捷、更安全

TXModel

  • 轻量级的数据转模型工具,比你想象中的更简单、更便捷、更安全

TXModel优点

  • 不但比MJExtension体积更小而且依然能完成MJExtension的同等功能
  • 方法较低层利于封装和扩展
  • 依赖性几乎为零
  • 开发者极易上手
  • 便捷性强

TXModel缺点

  • 逻辑复杂、多变的情况下需要开发者二次封装才能完成各项任务

cocoapods集成

  • pod 'TXModel', '~> 1.0'

代码片段

/*字典初始化*/
- (instancetype)initWithDictionary:(NSDictionary*)dictionary;
+ (instancetype)modelWithDictionary:(NSDictionary*)dictionary;
/*json初始化*/
- (instancetype)initWithJsonString:(NSString*)jsonString;
+ (instancetype)modelWithJsonString:(NSString*)jsonString;
/*获取对象的值*/
+ (NSDictionary*)objectValue:(id)obj;
/*获取对象内部*/
+ (id)objectInternal:(id)obj;
/*字典转化为数组*/
+ (NSArray*)dictionaryTransitionsAarrayWithDictionary:(NSDictionary*)dictionary;
/*当前对象的值*/
- (NSDictionary*)valueForKey;
/*当前对象的值的集合*/
- (NSArray*)valueForArray;
/*json转字典*/
+ (NSDictionary*)dictionaryWithJsonString:(NSString*)jsonString;
/*字典转json*/
+ (NSString*)jsonStringWithDictionary:(NSDictionary*)dictionary;
/*当前对象的Json*/
- (NSString*)valueForJsonString;

使用方法

  • 创建模型时继承TXModel类
#import "TXModel.h"

@interface TXPeople : TXModel
@property (nonatomic,copy)NSString * name;
@property (nonatomic,copy)NSString * sex;
@property (nonatomic,strong)NSNumber * age;
@property (nonatomic,strong)NSString * occupation;
@end

  • 使用示例:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    
    NSDictionary * dict=@{@"name":@"小明",
                          @"sex":@"男",
                          @"age":@17,
                          };
    TXPeople * people1=[[TXPeople alloc]initWithDictionary:dict];
    NSLog(@"people1.name:%@",people1.name);
    NSLog(@"people1.sex:%@",people1.sex);
    NSLog(@"people1.age:%@",people1.age);
    NSLog(@"people1.occupation:%@",people1.occupation);
    NSLog(@"people1.valueForJsonString:%@",people1.valueForJsonString);
    NSLog(@"people1.valueForKey:%@",people1.valueForKey);
    NSLog(@"people1.valueForArray:%@",people1.valueForArray);
    
    
    
    NSString * str=@"{\"name\" : \"小花\",\"sex\" : \"女\",\"age\" : 16,\"occupation\" :\"学生\" }";
    TXPeople * people2=[[TXPeople alloc]initWithJsonString:str];
    NSLog(@"people2.name:%@",people2.name);
    NSLog(@"people2.sex:%@",people2.sex);
    NSLog(@"people2.age:%@",people2.age);
    NSLog(@"people2.occupation:%@",people2.occupation);
    NSLog(@"people2.valueForJsonString:%@",people2.valueForJsonString);
    NSLog(@"people2.valueForKey:%@",people2.valueForKey);
    NSLog(@"people2.valueForArray:%@",people2.valueForArray);
    
    
    
    // Do any additional setup after loading the view, typically from a nib.
}
  • 打印示例:
2018-05-29 14:26:24.085763+0800 TXModelDemo[17840:309289] people1.name:小明
2018-05-29 14:26:24.085944+0800 TXModelDemo[17840:309289] people1.sex:男
2018-05-29 14:26:24.086073+0800 TXModelDemo[17840:309289] people1.age:17
2018-05-29 14:26:24.086186+0800 TXModelDemo[17840:309289] people1.occupation:(null)
2018-05-29 14:26:24.086522+0800 TXModelDemo[17840:309289] people1.valueForJsonString:{
  "age" : 17,
  "sex" : "男",
  "name" : "小明",
  "occupation" : null
}
2018-05-29 14:26:24.086827+0800 TXModelDemo[17840:309289] people1.valueForKey:{
    age = 17;
    name = "\U5c0f\U660e";
    occupation = "<null>";
    sex = "\U7537";
}
2018-05-29 14:26:24.087065+0800 TXModelDemo[17840:309289] people1.valueForArray:(
    17,
    "\U7537",
    "\U5c0f\U660e",
    "<null>"
)
2018-05-29 14:26:24.087350+0800 TXModelDemo[17840:309289] people2.name:小花
2018-05-29 14:26:24.087485+0800 TXModelDemo[17840:309289] people2.sex:女
2018-05-29 14:26:24.087600+0800 TXModelDemo[17840:309289] people2.age:16
2018-05-29 14:26:24.087731+0800 TXModelDemo[17840:309289] people2.occupation:学生
2018-05-29 14:26:24.087892+0800 TXModelDemo[17840:309289] people2.valueForJsonString:{
  "age" : 16,
  "sex" : "女",
  "name" : "小花",
  "occupation" : "学生"
}
2018-05-29 14:26:24.088079+0800 TXModelDemo[17840:309289] people2.valueForKey:{
    age = 16;
    name = "\U5c0f\U82b1";
    occupation = "\U5b66\U751f";
    sex = "\U5973";
}
2018-05-29 14:26:24.088262+0800 TXModelDemo[17840:309289] people2.valueForArray:(
    16,
    "\U5973",
    "\U5c0f\U82b1",
    "\U5b66\U751f"
)

查看项目源码请点这里!

猜你喜欢

转载自my.oschina.net/u/2483781/blog/1820633
今日推荐