swift - 在 Swift 中自动生成构造函数代码

标签 swift

我发现自己花了很多时间编写样板构造函数代码,如下所示。有没有办法让 XCode 生成这个/某种方式来加快这个过程?

public class T {
  let t1: T1
  let t2: T2
  let t3: T3

  public init(t1: T1, t2: T2, t3: T3) {
    self.t1 = t1
    self.t2 = t2
    self.t3 = t3
  } 

最佳答案

Sourcery是实现这一目标的绝佳工具。

这是您可以使用的模板(对于 sourcery 版本 > 0.10):

{% for type in types.structs %}
{% if type|annotated:"AutoInit" %}
{% set spacing %}{% if type.parentName %}    {% endif %}{% endset %}
{% map type.storedVariables into parameters using var %}{{ var.name }}: {{ var.typeName }}{% endmap %}
// sourcery:inline:auto:{{ type.name }}.AutoInit
{{spacing}}    {{ type.accessLevel }} init({{ parameters|join:", " }}) { // swiftlint:disable:this line_length
{{spacing}}        {% for variable in type.storedVariables %}
{{spacing}}        self.{{ variable.name }} = {{ variable.name }}
{{spacing}}        {% endfor %}
{{spacing}}    }
// sourcery:end
{% endif %}
{% endfor %}

我从这个 AutoInit 得到模板文章

关于swift - 在 Swift 中自动生成构造函数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42791272/

相关文章:

swift - 协议(protocol)扩展 : cannot assign to get-only property

Swift 变量语法

swift - 使用 dispatch_async 进行并行搜索

ios - 在 Swift 中将字典对象传递给 Objective C 协议(protocol)

ios - Swift - Xcode 无法识别现有的成员变量

ios - Spotify 返回无效的 NSDictionary

swift - 通过 XIB 将自定义 View 添加到 UIAlertController,但布局不符合预期

swift - 显示显示空白加载屏幕的付款选项

swift - 如何更正此 Swift 枚举?

ios - 在 Localized.strings 中按值获取键