自动生成属性的模型

利用 KVC 实现的自动生成属性的模型

调用下面的方法

    [NSObject createPropertyCodeWithNSDictionary:dataDic[0]];

在输出控制台输出属性模型, 利用kvc 属性名字与字典的 key 一一对应

但是 我们通常会遇到,字典 key为 id时,这个时候需要我们手动的去改一下属性的名字 ID

还有通常在遍历字典的时候,有的字典的属性有,有的字典没有这个属性,如果按照没有的字典生成的属性,那么有这个属性的字典,也需要我们手动去写上这个属性模型.

//
//  NSObject+Property.h
//  字典转模型KVC实现
//
//  Created by Apple on 16/8/16.
//  Copyright © 2016年 宁丽环. All rights reserved.
//

#import 

@interface NSObject (Property)

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

@end

//
// NSObject+Property.m
// 字典转模型KVC实现
//
// Created by Apple on 16/8/16.
// Copyright © 2016年 宁丽环. All rights reserved.
//

import "NSObject+Property.h"

@implementation NSObject (Property)

  • (void)createPropertyCodeWithNSDictionary:(NSDictionary *)dict {

    NSMutableString *str = [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) NSInteger %@;",propertyName];
          
      }else if ([value isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
         code = [NSString stringWithFormat:@"@property (nonatomic, assign) BOOL %@;",propertyName];
     }else if ([value isKindOfClass:NSClassFromString(@"__NSCFConstantString")]) {
          code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSString *%@;",propertyName];
    
      }else if ([value isKindOfClass:NSClassFromString(@"__NSCFDictionary")]) {
          
          code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSDictionary *%@;",propertyName];
          
      }else if ([value isKindOfClass:NSClassFromString(@"__NSCFArray")]) {
      
          code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSArray *%@;",propertyName];
    
      }
      [str appendFormat:@"\n%@\n",code];
    

    }];

    NSLog(@"*****%@*****",str);
    }

@end

你可能感兴趣的:(自动生成属性的模型)