Цель: создать enum
с кейсами всех возможных ошибок и добавить описание, которое может отсутствовать (в этом случае нужно вернуть имя кейса)
Сначала просто создаю перечисления:
enum AppErrors {
case noToken // отсутствует токен
case noMoney(moneyNeeded: Int) // не хватает N валюты
// Работа с файлами
case parse(fileName: String) // Не удалось распарсить файл
// ... и другие ошибки
}
Далее расширяю протоколом LocalizedError
:
extension AppErrors: LocalizedError {
var errorDescription: String? {
switch self {
case .noToken: return "Отсутствует токен"
case .noMoney(moneyNeeded: let money): return "не хватает \(money) валюты"
default: return self.rawValue // ERROR: Value of type 'AppErrors' has no member 'rawValue'
}
}
}
Строка с default
возвращает ошибку. Логично: AppErrors
не подписан под String
. Однако, если это сделать, то появляется другая ошибка:
Подскажите пожалуйста, в какую сторону двигаться, чтоб реализовать задуманное? Или может я вообще не так делаю?