为什么我的 self.init 不能在方便的初始值设定项中自动填充?



我不知道这是否重要,但这发生在一个extension

无论如何,我的老师今天让我们在模型的扩展中创建一个方便的初始值设定项。当他演示时,Xcode 的自动填充为他填写了初始值设定项,但什么也没给我。我问过这个问题,但我们想不通。我们班上的一些人让它工作,而其他人则没有。

从本质上讲,我们有这个:

extension Entry {
    //existing initializer
    convenience init(title: String, body: String) {
        self.init()
        self.title = title
        self.body = body
    }
    // new initializer we were creating
    convenience init(representation: EntryRepresentation) {
        // this next line would **NOT** autofill no matter what I tried
        // (both waiting, backing up and retyping a little, or hitting esc)
        // it wouldn't even show other, non convenience inits
        self.init(title: representation.title, body: representation.body)
    }
}

后来,经过一些故障排除(相信我,清理构建文件夹在这里无效(,我意识到我们的老师正在处理他从 Swift 4.2 天开始的模板,并且没有将模板更新到 Swift 5,而我已经启动了一个新项目并使用 Swift 5 作为我的编译器版本。在 Xcode 中切换后,4.2 使自动填充工作,而 5 破坏了它。

显然,切换此埋藏设置是解决此问题的便便解决方法,因此这是一个不错的解决方法:

  1. 就我而言,我会写出来:
    • Entry.init(
  2. 。这将给我我的自动填充选项
  3. 使用自动填充获取
    • Entry.init(title: <#String#>, body: <#String#>)
  4. 只需将类名替换为"self"即可获得
    • self.init(title: <#String#>, body: <#String#>)

最新更新