Почему мой 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)
    }
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Позже, после небольшого устранения неполадок (поверьте мне, очистка папки сборки здесь неэффективна), я понял, что наш учитель работал с шаблоном, который у него был со Swift 4.2 дней, и не обновлял шаблон до Swift 5, в то время как я начал новый проект и использовал Swift 5 в качестве моей версии компилятора. При переключении этого в Xcode 4.2 заставил автозаполнение работать, а 5 сломал его.

Очевидно, что переключение этого скрытого параметра является неправильным обходным путем для этой проблемы, поэтому вот достойный обходной путь:

  1. В моем случае я бы написал:
    • Entry.init(
  2. ...что даст мне варианты автозаполнения
  3. используйте автозаполнение, чтобы получить
    • Entry.init(title: <#String#>, body: <#String#>)
  4. Просто замените имя класса на «я», чтобы получить
    • self.init(title: <#String#>, body: <#String#>)

Похоже на регрессию (ошибку), отправьте отчет об ошибке по адресу bugreport.apple.com.

Paul Solt 31.05.2019 15:48

Другие вопросы по теме