美文网首页
根据allkeys数组快速创建NSObject类笔记

根据allkeys数组快速创建NSObject类笔记

作者: 数字d | 来源:发表于2021-11-01 12:21 被阅读0次

    iOS开发中,客户端与服务器之间的数据交互格式是约定好的,对于一个key值比较少的字典,一般复制一个model然后修改key值即可,但是对于key值比较多的字典,就有可能出现以下问题:

    1.修改和创建时候复制粘贴也有可能出现遗漏的问题
    2.key值过多复制多了眼睛疼,头皮发麻

    因为平时看数据结构是放在json高亮展示中,那里面对java开发有比较好的支持,放入json结构,可以自动生成java实例,也就是iOS开发中的数据model类
    对于Objective-C是没有那么友好的支持的,下面是解决方案:
    先打印出来服务端返回的数据格式resp=

    {
        "code": 1,
        "msg": "成功",
        "time": "1634889306",
        "data": {
            "pay_price": "1500.00",
            "service_charge": 300,
            "starttime": 1635562590,
            "city": "海口市",
            "province": "海南省",
            "price": "5000.00",
            "activityDate": "周六",
            "refund_price": 1200
        }
    }
    

    我们需要data层级里面的数据,通常情况我们根据打印出来的结果来复制对应的key值来创建Model,这里我们多走一步,先不打印它,先取出这data里面的数据并赋值给一个字典,我们先打印出来data中所有的key值,这是一个数组

    NSDictionary * dic = resp[@"data"];
    NSLog(@"%@",dic.allkeys);
    

    数组内容是

            pay_price,
            service_charge,
            starttime,
            city,
            province,
            price,
            activityDate,
            refund_price
    

    我们需要做的操作是将上面的内容转换成Model所需要的属性声明
    希望得到的结果是

    @property(nonatomic strong)NSString * refund_price;
    @property(nonatomic strong)NSString * pay_price;
    @property(nonatomic strong)NSString * service_charge;
    @property(nonatomic strong)NSString * starttime;
    @property(nonatomic strong)NSString * city;
    @property(nonatomic strong)NSString * province;
    @property(nonatomic strong)NSString * price;
    @property(nonatomic strong)NSString * activityDate;
    @property(nonatomic strong)NSString * refund_price;
    

    需求明确了下面开始动手
    1.在Desktop先创建个文件夹,这里的名字是creatfile,在这个文件件中创建一个文件allkeys.txt
    2.将上一步打印出来的allkeys复制出来,粘贴到allkeys.txt中,注意不要带iOS中的"(",因为我没做处理
    3.写个脚本文件allkeys.sh,这里简单说明下管道操作的用途,tr '\n' ' '表示将回车替换为空格,sed 's/ //g'去除空格,因为输出的是字符串,不写这两句虽然也行,但是有回车时候输出的内容需要自己排版,所以就加了这两个操作,为了输出结果好看点儿,echo >> filename 追加写,不会覆盖原来的内容,OLD_IFS="$IFS" 保存旧的分割符,可以在控制台复制,也可以去找文件outallkeys.txt复制

    #!/bin/sh
    path_in="/Users/mac/Desktop/creatfile/allkeys.txt"
    path_out="/Users/mac/Desktop/creatfile/outallkeys.txt"
    allstr=$(cat $path_in | tr '\n' ' ' | sed 's/ //g')
    IFS=","
    arr=($allstr)
    cout=${#arr[*]}
    for (( i = 0; i < cout; i++ ))
    do
        str=${arr[i]}
        totalstr="@property(nonatomic,strong)NSString * ${str};"
        echo $totalstr >> $path_out 
        arropuout[i]="\n$totalstr"
    done
    echo ${arropuout[*]}
    

    接下来常规操作,给脚本文件添加可执行权限

    chmod +x ./allkeys.sh
    

    执行一下:

    ./allkeys.sh
    

    打开creatfile文件夹,这里面多了个文件outallkeys.txt
    内容是:

    @property(nonatomic strong)NSString * refund_price;
    @property(nonatomic strong)NSString * pay_price;
    @property(nonatomic strong)NSString * service_charge;
    @property(nonatomic strong)NSString * starttime;
    @property(nonatomic strong)NSString * city;
    @property(nonatomic strong)NSString * province;
    @property(nonatomic strong)NSString * price;
    @property(nonatomic strong)NSString * activityDate;
    @property(nonatomic strong)NSString * refund_price;
    

    解决了快速创建model类的问题,减少了一点儿时间

    个人理解:所谓的技术提升,就是开发中遇到的任何觉得让人疲惫,或者难受的地方,都有更好的实现方案,而且方案你研究下,恰好能够实现它!

    相关文章

      网友评论

          本文标题:根据allkeys数组快速创建NSObject类笔记

          本文链接:https://www.haomeiwen.com/subject/yiiualtx.html