将jsonModel转化为文件

这个类是我自己写着用的,用于将字典文件直接转换成Model的文件,省去你写无数Model中属性的代码:

TransformDictionary.h 与 TransformDictionary.m

//
// TransformDictionary.h
// Dic
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import <Foundation/Foundation.h> @interface TransformDictionary : NSObject + (void)withDictionary:(NSDictionary *)dictionary fileName:(NSString *)name; @end
//
// TransformDictionary.m
// Dic
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import "TransformDictionary.h" @implementation TransformDictionary + (void)withDictionary:(NSDictionary *)dictionary fileName:(NSString *)name
{
NSDictionary *dic = dictionary;
NSString *shortName = name;
NSString *fullHeadName = [name stringByAppendingString:@".h"];
NSString *fullContentName = [name stringByAppendingString:@".m"]; // .h 文件头部信息
__block NSString *headFileString = \
[NSString stringWithFormat:@"//\n// %@\n//\n// Copyright (c) 2014年 Y.X. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface %@ : NSObject\n\n\n", fullHeadName, shortName]; // .h 文件中间信息
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([key isKindOfClass:[NSString class]]) {
if ([dic[key] isKindOfClass:[NSString class]]) {
headFileString = [headFileString stringByAppendingString:[NSString stringWithFormat:@"@property (nonatomic, strong) NSString *%@;\n", key]];
} else if ([dic[key] isKindOfClass:[NSNumber class]]) {
headFileString = [headFileString stringByAppendingString:[NSString stringWithFormat:@"@property (nonatomic, strong) NSNumber *%@;\n", key]];
} else if ([dic[key] isKindOfClass:[NSDictionary class]]) {
headFileString = [headFileString stringByAppendingString:[NSString stringWithFormat:@"@property (nonatomic, strong) NSDictionary *%@;\n", key]];
} else if ([dic[key] isKindOfClass:[NSArray class]]) {
headFileString = [headFileString stringByAppendingString:[NSString stringWithFormat:@"@property (nonatomic, strong) NSArray *%@;\n", key]];
} else {
NSLog(@"%@ %@",[dic[key] class], key);
headFileString = [headFileString stringByAppendingString:[NSString stringWithFormat:@"//@property (nonatomic, strong) %@ *%@;\n", [dic[key] class], key]];
}
}
}]; // - (void)setValue:(id)value forUndefinedKey:(NSString *)key
headFileString = [headFileString stringByAppendingString:@"\n\n- (void)setValue:(id)value forUndefinedKey:(NSString *)key;\n"]; // - (instancetype)initWithDictionary:(NSDictionary *)dictionary
headFileString = [headFileString stringByAppendingString:@"- (instancetype)initWithDictionary:(NSDictionary *)dictionary;\n"]; // .h 文件尾部信息
headFileString = [headFileString stringByAppendingString:@"\n\n@end\n\n"]; // .h 文件路径
NSString *headFileStringPath = \
[NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"/Documents/%@", fullHeadName]]; // 写文件
[headFileString writeToFile:headFileStringPath
atomically:YES
encoding:NSUTF8StringEncoding
error:nil]; // ================================================================================= // // .m 文件
NSString *contentFileString = \
[NSString stringWithFormat:@"//\n// %@\n//\n// Copyright (c) 2014年 Y.X. All rights reserved.\n//\n\n#import \"%@\"\n\n@implementation %@\n\n", fullContentName, fullHeadName, shortName]; // .m 文件中间部分
// - (void)setValue:(id)value forUndefinedKey:(NSString *)key
contentFileString = [contentFileString stringByAppendingString:@"- (void)setValue:(id)value forUndefinedKey:(NSString *)key\n{\n// if([key isEqualToString:@\"id\"]) {\n// self.productID = value;\n// }\n}\n"]; // - (void)setValue:(id)value forKey:(NSString *)key
contentFileString = [contentFileString stringByAppendingString:@"\n- (void)setValue:(id)value forKey:(NSString *)key\n{\n if ([value isKindOfClass:[NSNull class]]) {\n return;\n }\n\n [super setValue:value forKey:key];\n}"]; // - (instancetype)initWithDictionary:(NSDictionary *)dictionary
contentFileString = [contentFileString stringByAppendingString:@"\n- (instancetype)initWithDictionary:(NSDictionary *)dictionary\n{\n self = [super init];\n if (self)\n {\n if ([dictionary isKindOfClass:[NSDictionary class]])\n {\n [self setValuesForKeysWithDictionary:dictionary];\n }\n }\n\n return self;\n}\n"]; // .m 文件尾部信息
contentFileString = [contentFileString stringByAppendingString:@"\n\n@end"]; // .m 文件路径
NSString *contentFileStringPath = \
[NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"/Documents/%@", fullContentName]]; [contentFileString writeToFile:contentFileStringPath
atomically:YES
encoding:NSUTF8StringEncoding
error:nil]; // 提示信息
NSLog(@"生成的文件在以下路径中 \n%@", [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"/Documents"]]);
} @end

用工具生成的Model如下:

最新文章

  1. C语言2
  2. js声明json数据,打印json数据,遍历json数据
  3. eclipse里面构建maven项目详解(转载)
  4. jmeter 构建一个Web测试计划
  5. HTML---6 运算符,类型转换
  6. GNU的ar,ranlib和nm
  7. 修改linux主机名称
  8. JavaFX(一)窗口跳转
  9. java基础学习总结五(递归算法、冒泡排序、查看生成API)
  10. JSTL 数字日期标签库
  11. [linux]ubuntu14.04通过apt-get安装软件失败
  12. MQTT协议之 Apache Apollo服务
  13. windows防火墙实验-命令行设置远程桌面连接以及禁止浏览器上网
  14. Azkaban工作流调度器
  15. JAVA003-变量、数据类型
  16. Linux查看端口占用情况并释放端口占用
  17. HTML语义化简介思维导图
  18. JavaWeb 简单实现客户信息管理系统
  19. HTTP认证与https简介
  20. [leetcode] 18. Length of Last Word

热门文章

  1. 业务ID 生成规则
  2. Eclipse安装fat jar的两种方式
  3. MySQL 继续-- Win7 安装及后续工作
  4. Percona-mysql server 5.5升级5.6
  5. [转]一步步学习EF Core(2.事务与日志)
  6. Java并发常见问题
  7. 【 js 片段 】移动端适配简易步骤
  8. Algorithm——Add Two Numbers(补上周)
  9. elastic job will never fire
  10. LOJ#6463 AK YOI 树分治+线段树合并