Mám UIButton, ktorý mení názov v rôznych situáciách. Ak stlačíte tlačidlo, aktuálnyTitle by sa mal skontrolovať pomocou prepínača Swift (a niektorých vykonaných kódov).
Nasledujúce nie je funkčné:
@IBAction func button(_ sender: UIButton) {
switch sender.currentTitle {
case "":
//Code
case "OK":
//Code
default:
}
}
Xcode zobrazuje iba "Očakávaný vzor" (prvá príčina) a "Očakávaný výraz" (2. prípad)
odpovede:
1 pre odpoveď č. 1podľa dokumentácie, UIButton.currentTitle
je typu String?
, (voliteľný typ reťazca)
tvoj switch
príkaz porovnáva voliteľný typ s nepovinným typom, čo je dôvod, prečo vidíte chyby.
Navrhnite prvú rozbaľovaciu hodnotu skôr, ako ju skontrolujete s hodnotou a switch
Páči sa mi to:
guard let title = sender.currentTitle() else { return }
switch title {
...
}
0 pre odpoveď č. 2
Každý prípad v prepínači musí mať riadok kódu. Ak nechcete robiť čokoľvek, čo môžete použiť break
:
@IBAction func button(_ sender: UIButton) {
switch sender.currentTitle {
case "":
//Code
case "OK":
//Code
default:
break
}
}
-1 pre odpoveď č. 3
Problém som náhodou vyriešil pridaním otázok
@IBAction func button(_ sender: UIButton) {
switch sender.currentTitle {
case ""?:
//Code
case "OK"?:
//Code
default:
break
}
}
Neviem prečo, ale aj napriek tomu vďaka za to, že mi pomohla.