内容简介:作为一个iOS developer 突然想尝试Mac开发,这是我第一个Mac APP这个软件目前包含以下功能在创建工程的时候选择macOS->Cocoa App
作为一个iOS developer 突然想尝试Mac开发,这是我第一个Mac APP
这个软件目前包含以下功能
- ConvertFromCase 把选择的下划线内容变为驼峰
- DeleteEmptyLines 删除选中的空行
- SortLines 排列选中的行
- JsonToModel 把Json数据转成Swift模型,会把下划线命名变为驼峰
如何使用
- 下载 最新的版本
- 解压之后可以把应用移到应用程序中,方便下次使用!
- 打开应用!
- 在安全与隐私设置中点仍要打开
- 打开的界面可以把Json数据转成Swift模型,会把下划线命名变为驼峰。在左边放入Json,点击转换。
- 在设置中选择扩展,勾上这些功能。
- 打开Xcode,在菜单栏中Editor中就可以看到这些插件
创建Cocoa APP
在创建工程的时候选择macOS->Cocoa App
Xcode 插件
Apple在Xcode8的时候引入插件开发,虽然很弱鸡,但是还是能实现部分功能的。
创建target
新建target 选择macOS->Xcode Source Editor Extension
XcodeKit
创建名字 DeleteEmptyLines 的target会有以下文件
-
info.plist文件中是target的配置
XCSourceEditorCommandName 这里可以改名字
-
SourceEditorExtension.swift中实现了XCSourceEditorExtension都是可选方法-
extensionDidFinishLaunching插件在启动的时候执行 -
commandDefinitions这个地方会覆盖info.plist的设置
-
-
SourceEditorCommand.swift中实现了XCSourceEditorCommand-
perform一旦触发插件的命名,就会触发此方法,参数invocation:XCSourceEditorCommandInvocation包含了文本缓存的内容buff -
buff.selections就是选中文本的范围,buff.lines是每一行的文本,我们可以改变它来改变文本的内容
-
实现第一个插件-删除所选代码中的空行
增加以下代码
extension XCSourceEditorCommandInvocation {
var selections: [XCSourceTextRange] {
return buffer.selections as! [XCSourceTextRange]
}
func deleteEmptyLines() {
selections.forEach { (selection) in
let start = selection.startLine
let end = selection.endLine
let emptyIndexs = (start...end)
.filter({ (index) -> Bool in
(buffer.lines[index] as! String).match(regular: "^\\s*$")
})
buffer.lines.removeObjects(at: IndexSet(emptyIndexs))
}
}
}
extension String {
func match(regular: String) -> Bool {
return range(of: regular, options: .regularExpression) != nil
}
}
extension XCSourceTextRange {
var startLine: Int {
return start.line
}
var endLine: Int {
return end.line - (end.column == 0 ? 1 : 0)
}
}
复制代码
在 SourceEditorCommand 中修改 perform 方法
func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) {
defer { completionHandler(nil) }
invocation.deleteEmptyLines()
}
复制代码
测试
选择要测试的target
选择Xcode
会有一黑色的Xcode用于测试
任意打开一个项目
- 选中一段代码
- 在菜单栏选择 Editor-> DeleteEmptyLines -> Source Editor Command
如果不是这个命名就这样找: Editor —> Extension bundle display name -> command name
Json转model界面
在iOS开发的时候,由于后台返回的数据用的是下划线命名法,而APP使用的是驼峰命名法,于是我做了一个界面来处理。
界面
选择工程中的 Main.storyboard ,在View Controller中拖入两个TextView,和一个button
调整控件的样式,加上布局约束。写成喜欢的样式-,-
绑定这些控件到ViewController代码中
代码
在 convert 方法中写转换的代码就行了,代码较长放在文章末尾的GitHub链接。
有一个细节需要注意,macOS在输入引号的时候会自动转为Json不能解析的格式,所以需要设置 NSTextView 的 isAutomaticQuoteSubstitutionEnabled 为 false
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计数组合学(卷2)
斯坦利 / 机械工业出版社 / 2004-11-15 / 59.00元
本书介绍了生成函数组合、树、代数生成函数、D有限生成函数、非交换生成函数和对称函数。关于对称函数的论述只适用于研究生的入门课程并着重于组合学方面,尤其是Robinson-Schensted-Knuth算法,还讨论了对称函数与表示论之间的联系。附录(由Sergey Fomin编写)中更深入地讨论了对称函数理论,包括jeu de taquin和Littlewood-richardson规则。另外,书中......一起来看看 《计数组合学(卷2)》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
HSV CMYK 转换工具
HSV CMYK互换工具