美文网首页
字典转模型自动生成属性代码

字典转模型自动生成属性代码

作者: 07212a79db66 | 来源:发表于2016-06-30 14:03 被阅读74次

在开发过中每次字典转模型的时候都要写上一堆属性代码,那么有没有比较好的方法在解析的过程当中一次性生成属性代码,直接来cmd + c ,cmd + v 就搞定呢 ?

新建一个NSObject的分类:
NSObject+Property.h

#import <Foundation/Foundation.h>

@interface NSObject (Property)

+ (void)createPropertyCodeWithDict:(NSDictionary *)dict;

@end

NSObject+Property.m

#import "NSObject+Property.h"

@implementation NSObject (Property)
+ (void)createPropertyCodeWithDict:(NSDictionary *)dict
{
    
    NSMutableString *strM = [NSMutableString string];
    // 遍历字典
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull propertyName, id  _Nonnull value, BOOL * _Nonnull stop) {
        //NSLog(@"%@ %@",propertyName,[value class]);
        NSString *code;
        
        if ([value isKindOfClass:NSClassFromString(@"__NSCFString")]) {
            code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSString *%@;",propertyName]
            ;
        }else if ([value isKindOfClass:NSClassFromString(@"__NSCFNumber")]){
            code = [NSString stringWithFormat:@"@property (nonatomic, assign) int %@;",propertyName]
            ;
        }else if ([value isKindOfClass:NSClassFromString(@"__NSCFArray")]){
            code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSArray *%@;",propertyName]
            ;
        }else if ([value isKindOfClass:NSClassFromString(@"__NSCFDictionary")]){
            code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSDictionary *%@;",propertyName]
            ;
        }else if ([value isKindOfClass:NSClassFromString(@"__NSCFBoolean")]){
            code = [NSString stringWithFormat:@"@property (nonatomic, assign) BOOL %@;",propertyName]
            ;
        }
        [strM appendFormat:@"\n%@\n",code];
        
    }];
    NSLog(@"%@",strM);
}
@end

.m文件里面的类型不全,当遇到新的类型的时候可以再添加一个判断.

#import "ViewController.h"
#import "NSObject+Property.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"status.plist" ofType:nil];
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];
    NSArray *dictArr = dict[@"statuses"];
    
     // 设计模型属性代码
    [NSObject createPropertyCodeWithDict:dictArr[0][@"user"]];
}
@end

然后按下cmd + R,控制台输出:


直接复制,粘贴到模型里面,是不是很爽啊.

相关文章

网友评论

      本文标题:字典转模型自动生成属性代码

      本文链接:https://www.haomeiwen.com/subject/kftfjttx.html