代码自动生成

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~主函数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#import <Foundation/Foundation.h>

#import "AutoCode.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool { 

        // 1.用字典保存Person类的信息

        NSDictionary *personClass = [NSDictionarydictionaryWithObjectsAndKeys:

                                    // @"Person", @"className",

                                     @"NSString *"@"name",

                                     @"NSString *"@"sex",

                                     @"NSInteger"@"age"nil];

        

        AutoCode *auto1 = [[AutoCode alloc]init];

        NSLog(@"%@", [auto1 createInitStringWith:personClass]);

    }

    return 0;

}




/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Person.h~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#import <Foundation/Foundation.h>


@interface Person : NSObject

@property(nonatomicretain)NSString *name;

@property(nonatomicretain)NSString *sex;

@property(nonatomicassign)NSInteger age;


- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age;

@end


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Person.m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#import "Person.h"

@implementation Person

- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age

{

    self = [super init];

    if (self) {

        self.name = name;

        self.sex = sex;

        self.age = age;

    }

    return self;

}

@end


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~AutoCode.h~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#import <Foundation/Foundation.h>


@interface AutoCode : NSObject

/// 根据字典信息,生成初始化方法源代码

-(NSString *) createInitStringWith:(NSDictionary *)classInfoDic;

@end



/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~AutoCode.m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#import "AutoCode.h"

@implementation AutoCode

/// 根据字典信息,生成初始化方法源代码

- (NSString *)createInitStringWith:(NSDictionary *)classInfoDic

{

    NSMutableString *codeing = [NSMutableStringstringWithFormat:@"- (id)initWith"];

    NSArray *keys = [classInfoDic allKeys];

    NSArray *values = [classInfoDic allValues];

    for (int i = 0; i < [keys count]; i++) {

        NSString *key = keys[i];

        if (i == 0) {

            [codeing appendString:[key capitalizedString]];

        } else {

            [codeing appendString:key];

        }

        [codeing appendFormat:@":(%@)%@",values[i],key];

        if (i == [keys count] - 1) {

            [codeing appendString:@"\n{"];

        } else {

            [codeing appendString:@" "];

        }

    }

    [codeing appendString:@"  self = [super init];\n"];

    [codeing appendString:@"   if (self) {\n"];

    for (int i = 0; i < [keys count]; i++) {

        [codeing appendFormat:@"        self.%@ = %@;\n", keys[i], keys[i]];

    }

    [codeing appendString:@"     }\n     return self;\n}"];

    return codeing;

}

@end


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值