zoukankan      html  css  js  c++  java
  • 自动生成属性的模型

    利用 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 <Foundation/Foundation.h>
    
    @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:@"
    %@
    ",code];
            
        }];
       
        NSLog(@"*****%@*****",str);
    }
    
    @end
  • 相关阅读:
    1049: 贝贝的车牌问题(car)
    漂亮的验证码(.Net MVC)
    低危漏洞- X-Frame-Options Header未配置
    Linq中的连接(join)
    定时执行任务FluentScheduler
    NET定时任务执行管理器开源组件–FluentScheduler
    在ASP.NET中如何运行后台任务
    【译】微型ORM:PetaPoco
    3389凭据不工作
    C# LDAP认证登录
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/5776249.html
Copyright © 2011-2022 走看看