Sobes.tech
Junior

Kdy byste měli v Swift používat vynucené získávání hodnot?

sobes.tech AI

Odpověď od AI

Vynucené získání volitelných typů (pomocí !) by mělo být používáno velmi zřídka a pouze v případech, kdy jste si naprosto jisti, že volitelná hodnota obsahuje nenulovou hodnotu.

Hlavní scénáře použití:

  1. Testy a prototypy: Pro rychlé ověření konceptů, kdy není kritické, že aplikace může selhat s nil.
  2. Explicitní nesprávný stav: Když nil v vynuceném volitelném typu ukazuje na kritickou chybu v logice programu, kterou je třeba ihned odhalit (například chyba konfigurace nebo nesprávný stav dat).
  3. forceUnwrap při ladění: Někdy se používá při ladění, aby se rychle ověřila hodnota, ale je to dočasné řešení.

Příklad (extrémně opatrné použití):

// Příklad, když jste *naprosto* jistí, že soubor nib existuje
class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Pokud `MyView.xib` neexistuje, aplikace spadne.
        // Toto je NEBEZPEČNÝ kód v produkci!
        let myView = Bundle.main.loadNibNamed("MyView", owner: self, options: nil)![0] as! UIView
        view.addSubview(myView)
    }
}

Nesmíte používat vynucené získání v následujících případech:

  • Když jsou pochybnosti o přítomnosti hodnoty.
  • Pro zpracování možných vstupních dat od uživatele nebo z externích zdrojů.
  • Ve většině produkčního kódu, kde je pád aplikace nepřijatelný.

Preferované alternativy:

  • if let nebo guard let pro podmíněné získání.
  • Operátor nulové koalescencie (??) pro poskytnutí výchozí hodnoty.
  • Řetězení volitelných (?.) pro podmíněné volání metod nebo přístup k vlastnostem.