python写一段自动生成Objective-C模型对象的脚本

新学python,读取文件操作文件部分,一直是我比较头疼的部分

其他平台的编译调试比较累。

想来每次写iphone程序mvc分离时候,最头疼的就是复制粘贴model和object部分了。

于是亲自动手练习一下=_=代码写的不是很好,希望指正。


1.0版本


支持ARC与非ARC

支持NSString,NSInteger,NSDate


下面的工作:

1:安装到本地和打包上传

2:增加自定义对象。

3:模型部分(支持单件模式,数组列表,增删改查函数)


都不是很麻烦,以后想起来在加=_=





以下是代码


__author__ = 'watsy'
import sys

"""
title comment
"""
def fileTitleComment():
    return """  /**
    *author:watsy
    */\n"""


"""
help
"""
def showHelp():
    print """help\n
    example:

    1:createObject.py obj:CWDemoObject 1 s:sName s:sTitle i:nID d:dBirtyday
    2:createObject.py obj:CWDemoObject 0 s:sName s:sTitle i:nID d:dBirtyday
    3:createObject.py obj:CWDemoObject s:sName s:sTitle i:nID d:dBirtyday
    4:createObject.py CWDemoObject s:sName s:sTitle i:nID d:dBirtyday

    obj:name (name means file name and object name.)
    1: open arc flag ^-^

    s:NSString
    i:NSInteger
    d:NSDate"""

"""
@property (nonatomic, strong) NSString*     sCode;
"""
def writeObj(obj_string, fileHandle):
    try:
        (obj, name) = obj_string.strip().split(':')
        if obj == 's':
            fileHandle.write('@property (nonatomic, strong) NSString*\t\t\t%s;\n' %(name))
        elif obj == 'i':
            fileHandle.write('@property (nonatomic, assign) NSInteger\t\t\t%s;\n' %(name))
        elif obj == 'd':
            fileHandle.write('@property (nonatomic, strong) NSDate*\t\t\t%s;\n' %(name))

    except ValueError as err:
        print ('error %s' % (err))

"""
@synthesize _sCode;
"""
def writeSynthesize(obj_string, fileHandle):
    try:
        (obj, name) = obj_string.strip().split(':')
        fileHandle.write('@synthesize _%s;\n' %(name))
    except ValueError as err:
        print ('error %s' % (err))


"""
    [object release];
"""
def writeObjectRelease(obj_string, fileHandle):
    try:
        (obj, name) = obj_string.strip().split(':')
        fileHandle.write('\n\t[_%s release];' % (name))
    except ValueError as err:
        print ('error %s' % (err))

def createObject(*args, **kwargs):
    # print args
    try:
        args  = args[0]

        if len(args) == 2 and args[1] == '--help':
            showHelp()
        else:
            filename = args[1]
            #get file name
            if 'obj:' in filename:
                filename = filename.split(":")[1]

            arc = args[2]
            bArc = False
            if arc == '1':
                bArc = True
                objs = args[3:]
            elif arc =='0':
                objs = args[3:]
            else:
                objs = args[2:]

            #create file.h
            with open("%s.h" % (filename), 'w') as fn:
                #write title comment
                fn.write(fileTitleComment())

                #write import file

                fn.write('import <Foundation/Foundation.h>\n\n')
                #write object
                fn.write("@interface %s : NSObject\n\n" % (filename))

                for eachObj in objs:
                    writeObj(eachObj, fn)

                #write end
                fn.write("\n@end")

            #create file.m
            with open("%s.m" % (filename), 'w') as fn:
                #write import file
                fn.write('#import "%s.h"\n\n' % (filename))
                fn.write('@implementation %s\n\n' % (filename))

                #@synthesize
                for eachObj in objs:
                    writeSynthesize(eachObj, fn)

                #init
                fn.write('\n- (id) init {\n\tif (self = [super init]) {\n\t\t//add code\n\t}\n\treturn self;\n}')

                #arc model
                if bArc == False:
                    fn.write('\n\n- (void) dealloc {\n');
                    for eachObj in objs:
                        writeObjectRelease(eachObj, fn)
                    fn.write('\n\n\t[super dealloc]\n}\n\n');

                fn.write('\n@end')


    except:
        print "input error : %s" % ( args)
        print showHelp()

if __name__ == '__main__':
    createObject(sys.argv)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值