iOS-懶人教程-自動生成property到.h文件-OC

效果圖

final cut.png
實(shí)現(xiàn)原理
  1. 配置Info.plist文件,加入自定義的字段:
    ProjectDir : $(SRCROOT)/$(PROJECT_NAME)
  2. 遍歷dictionary中的key和value,拼接字符串:@property(nonatomic,cop)NSString *key;
  3. 分類整理-純?yōu)榱撕啙?/li>
  4. 保存到指定的.h文件中
  5. 用NSAssert進(jìn)行了出錯(cuò)提示,比如沒有配置ProjectDir、.h文件找不到、.h文件讀取失敗
配置Info.plist
Info.plist.png
實(shí)現(xiàn)代碼-核心

PropertiesGenerator.m

// 分類
    NSMutableArray *propertiesArray = [NSMutableArray array];
    NSMutableArray *NSStringArray = [NSMutableArray array];
    NSMutableArray *NSDictinoaryArray = [NSMutableArray array];
    NSMutableArray *NSArrayArray = [NSMutableArray array];
    NSMutableArray *BOOLArray = [NSMutableArray array];
    NSMutableArray *floatArray = [NSMutableArray array];
[dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSString *str;
        if ([self class:obj isKindOfClass:@"__NSCFString"] || [self class:obj isKindOfClass:@"NSTaggedPointerString"] || [self class:obj isKindOfClass:@"__NSCFConstantString"]) {
            str = [NSString stringWithFormat:@"@property(nonatomic,copy)NSString *%@;",key];
            [NSStringArray addObject:str];
        }
        else if ([self class:obj isKindOfClass:@"__NSCFNumber"]) {
            str = [NSString stringWithFormat:@"@property(nonatomic,assign)float %@;",key];
            [floatArray addObject:str];
        }
        else if ([self class:obj isKindOfClass:@"__NSCFArray"] || [self class:obj isKindOfClass:@"__NSArrayI"]) {
            str = [NSString stringWithFormat:@"@property(nonatomic,copy)NSArray *%@;",key];
            [NSArrayArray addObject:str];
        }
        else if ([self class:obj isKindOfClass:@"__NSCFDictionary"] || [self class:obj isKindOfClass:@"__NSDictionaryI"]) {
            str = [NSString stringWithFormat:@"@property(nonatomic,copy)NSDictionary *%@;",key];
            [NSDictinoaryArray addObject:str];
        }
        else if ([self class:obj isKindOfClass:@"__NSCFBoolean"]) {
            str = [NSString stringWithFormat:@"@property(nonatomic,assign)BOOL %@;",key];
            [BOOLArray addObject:str];
        }
    }];

    [propertiesArray addObjectsFromArray: NSStringArray];
    [propertiesArray addObjectsFromArray: NSDictinoaryArray];
    [propertiesArray addObjectsFromArray: NSArrayArray];
    [propertiesArray addObjectsFromArray: BOOLArray];
    [propertiesArray addObjectsFromArray: floatArray];
    propertiesString = [propertiesArray componentsJoinedByString:@"\n"];

// 然后寫入到.h文件中
用法
#import "PropertiesGenerator.h"
     NSDictionary *dict = @{
                           @"name": @"zhuxuhong",
                           @"age": [NSNumber numberWithFloat:22],
                           @"nickname": @"flytoo",
                           @"friends": @[@"1",@"2",@"3"],
                           @"experience": @{@"2016": @"BISTU"},
                           @"password": @"1234",
                           @"education": @{@"2016": @"BISTU"},
                           @"graduated": [NSNumber numberWithBool:true]
                           };
    
    [[PropertiesGenerator generator] autoGeneratePropertiesInModelClass:@"Me" Dictionary:dict]; //判斷是否寫入成功
github源文件

https://github.com/BackWorld/PropertiesGenerator

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容