什么是最好的替换方法:
.doOnComplete {
// Implementation
}
和
.do(
onComplete: {
// Implementation
}
)
整个大型 Swift 代码库?鉴于有大量这些手动替换不是一种选择。
什么是最好的替换方法:
.doOnComplete {
// Implementation
}
和
.do(
onComplete: {
// Implementation
}
)
整个大型 Swift 代码库?鉴于有大量这些手动替换不是一种选择。
根据代码的复杂性,这可能很难实现。
正确的方法确实是尝试捕获实现块。但是,重要的是要注意平衡的花括号,例如:
\.doOnComplete\s*(\{(?>[^{}]+|(?1))*\})
然后替换为
.do(\n\tonComplete: $1\t\n)
PS:我试图漂亮地打印代码,但无论如何你都必须重新格式化代码。
Xcode 中的查找和替换功能有一个正则表达式选项。您应该能够制作一个正则表达式来执行此操作。
在 Xcode-Menu 的 Find>Find and Replace in Project...(或者⌥⇧⌘F)中。您到达通常可以找到 Project Navigator 的地方,现在是 Find Navigator。在最顶部选择而不是“文本”“正则表达式”:
然后输入第一个文本字段(注意:我的方法不起作用,如果你的块在花括号内包含一些更多的花括号)
( *)\.doOnComplete \{([^\}]*)\}
紧随enter其后。在第二个文本字段下方,应该显示所有出现的.doOnComplete
块。
现在您可以输入(每个 '[enter]' 表示control+q后跟enter)
$1.do([enter]$1onComplete: {$2}[enter]$1)
在第二个文本字段中。之后,您应该选择第二个文本字段下方找到的事件之一,然后按“替换”按钮。如果替换正常并且块中的所有内容仍然存在,您可以按下“全部替换”按钮,整个项目中的所有内容都应该被替换。