Не знаю, важно это или нет, но это происходит в 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 сломал его.
Очевидно, что переключение этого скрытого параметра является неправильным обходным путем для этой проблемы, поэтому вот достойный обходной путь:
Entry.init(
Entry.init(title: <#String#>, body: <#String#>)
self.init(title: <#String#>, body: <#String#>)
Похоже на регрессию (ошибку), отправьте отчет об ошибке по адресу bugreport.apple.com.