将jsonModel转化为文件

时间:2022-11-23 05:26:01

将jsonModel转化为文件

将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如下:

将jsonModel转化为文件

将jsonModel转化为文件