为什么我的self.init无法自动填充到便利初始化程序中?

时间:2019-05-29 23:53:28

标签: swift xcode

我不知道这是否重要,但这发生在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)
    }
}

1 个答案:

答案 0 :(得分:3)

后来,经过一些故障排除(相信我,在这里清理build文件夹是无效的),我意识到老师正在处理他从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#>)