Missing return in instance method expected to return 'String


#1

Всем привет, реализовываю класс ТВ и метод по которому он должен вернуть, что показывается на экране. Делаю через if возникает вопрос когда working == false и пишу return “TV Off” выдает ошибку. если писать else ( return “TV Off”} все окей, не могу понять почему так компилятор работает, или особенность возврата и условий

//First task
enum TVChannel: String {
    case visionSport = "American football"
    case tNT = "Improvizasiya"
    case cTC = "Advertisting"
    case pyatnica = "Orel and Reshka"
    case matchTV = "Soccer"
    case spas = "Pop"
}

let a = TVChannel.cTC.rawValue

class TV {
    let firmModel = "Samsung - A52"
    let working = true
    let activeChannel = TVChannel.cTC
    
    func activeProgram() -> String {
        if working == true {
            return activeChannel.rawValue
            // else { } - working in XCode..
        } else if working == false {
            return "TV Off"
        }
}
}

#2

Конструкция if {} else if {} подразумевает, что оба условия могут не сработать, поэтому компилятор требует у вас вернуть результат. Т.к. у вас в условии проверяется Bool тип, else if не правильно использовать, нужно просто else, либо без else, но в конце сделать return.


#3

Понял, спасибо большое RexHunt. После написания вопроса на форуме - сделал через switch.


#4

Через if в данном случае было бы нагляднее

if working { return activeChannel.rawValue }
return "TV Off"