小事: 自动生成Getter代码

来源:互联网 发布:庞博 程序员 编辑:程序博客网 时间:2024/06/05 18:48

之前有看到过一个Xcode插件, 可以根据选中的属性名自动生成对应Getter代码, 当时我还在想: 这东西挺有用的, 但自己一直都是xib/storyboard开发, 不太用得上.
谁知道, 没过多久我就被告知以后的项目只能使用纯代码编程了, 这就很尴尬了, 更尴尬的是那个插件链接当时没存, 现在怎么找都找不到了.
后来辗转了解到那个插件是基于Xcode Source Editor Extensions开发的, 看了看相关资料发现不太麻烦, 就花了两个小时自己写了一个. 实现效果如图:


x.gif

如何使用

使用方式很简单, 打开插件工程, Command+R然后选择Xcode开始运行. 如图:


2468127-226a2dc5ccd4df24.png

插件运行成功后, Dock栏会有一个黑色的Xcode图标, 点击黑色Xcode选择自己的项目工程打开, 然后选中想要生成Getter代码的属性列表, 最后点击Xcode工具栏的Editor->HHGetterGenerator->Source Editor Command即可(如果Editor栏没有插件名, 那可能是插件运行失败了, 重新运行即可). 如图:


屏幕快照 2017-06-11 下午1.23.47.png

当然, 如果你觉得鼠标点击的方式比较麻烦的话, 你也可以通过Xcode偏好设置->Key Bindings设置一下插件的快捷键. 如图:


屏幕快照 2017-06-11 下午1.34.47.png

最后, 因为插件我是用免费证书运行的, 所以如果插件工程停止运行, 那么东西就不灵了. 各位可以自己把代码拉下来以后替换成公司的开发证书, 然后插件就可以实实在在的装到Xcode上了, 具体过程请参考:Xcode 8 插件——Source Editor Extensions

如何拓展

个人比较懒散, 只实现了一些自己用的上的代码块, 如果你有其他需求或者文中代码规范不合你意, 可以自己到SourceEditorCommand.m中添加/修改源码, 里面我已经定义好了一些简单的宏方便后续的拓展.
如果你需要新的类Getter方法, 假设类名是XXX, 那么自己添加一个XXXGetter进行实现, 然后呢在generateGetterDescription加上ReturnGetter(XXX)即可.
SourceEditorCommand.m里面的现有实现是这些:

static inline NSArray *generateGetterDescription(NSString *className, NSString *propertyName) {#define ReturnGetter(clsName) if ([className isEqualToString:[NSString stringWithUTF8String:#clsName]]) return clsName##Getter(propertyName);    ReturnGetter(UIView)    ReturnGetter(UILabel)    ReturnGetter(UIButton)    ReturnGetter(UITextView)    ReturnGetter(UITextField)    ReturnGetter(UIImageView)    ReturnGetter(UITableView)    ReturnGetter(UICollectionView)    return nil;}static inline NSArray *UIViewGetter(NSString *propertyName)static inline NSArray *UILabelGetter(NSString *propertyName)static inline NSArray *UIButtonGetter(NSString *propertyName)...其他UI

note: 如果你想要自己改源码, 需要注意一点: Xcode Source Editor不太稳定, 多次运行容易崩溃. 不过插件工程的崩溃不会影响到我们的项目的工程, 所以不用担心, 你需要的, 只是耐心的再次运行.

本文附带的demo地址



作者:黑花白花
链接:http://www.jianshu.com/p/ae97892739e0
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原创粉丝点击