Как исправить "не удалось найти 'init (domain: code: userInfo :)' в родительском классе" при архивировании? - PullRequest
0 голосов
/ 07 мая 2019

Я выполняю миграцию Swift для моего существующего проекта с Swift 3 на Swift 4.2.Я уже выполнил помощник Xcode 10.1, и мой проект правильно откомпилирован в отладке, но когда я пытаюсь архивировать, он выдает ошибку из заголовка.

Мой проект состоит из

  • Основной проект -> Миграция в Swift 4.2
  • Модуль утилит -> Swift 3.2

В модуле утилит есть подкласс NSError (CMError)

public class CMError: NSError {

    // MARK: - Initializers

    public convenience init(type: CMErrorType) {
        self.init(domain: CMErrorDomain,
                  code: type.rawValue,
                  userInfo: type.localizedUserInfo())
    }

    public convenience init(type: CMErrorType, code: String) {
        self.init(domain: CMErrorDomain,
                  code: type.rawValue,
                  userInfo: type.localizedUserInfo(code: code))
    }

    public convenience init(type: CMErrorType, code: String, localizedDescription: String) {
        self.init(domain: CMErrorDomain,
                  code: type.rawValue,
                  userInfo: type.localizedUserInfo(code: code,
                                                   localizedDescription: localizedDescription))
    }
}

Это ошибка, которую я получаю при архивировании.

enter image description here

enter image description here

Кто-нибудь вычисляетиз чего может быть проблема?

Спасибо

1 Ответ

0 голосов
/ 08 мая 2019

Наконец, я добавил переопределение инициализации NSError в моем подклассе CMError, и он успешно заархивирован.

public override init(domain: String, code: Int, userInfo dict: [String : Any]? = nil) {
    super.init(domain: domain, code: code, userInfo: dict)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...