簡體   English   中英

為什么我的self.init自動填充在便利初始化器中?

[英]Why won't my self.init autofill in a convenience initializer?

我不知道這是否重要,但這是在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#>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM