Sobes.tech
Junior

Millal peaks Swiftis kasutama sunnitud väärtuste väljavõtmist?

sobes.tech AI

Vastus AI-lt

sunnitud valikuli tüübi välja võtmine (kasutades !) tuleks kasutada äärmiselt harva ja ainult siis, kui olete täiesti kindel, et valikuliselt on mitte-tühi väärtus.

Peamised kasutusjuhtumid:

  1. Testid ja prototüübid: Kiire kontseptsioonide kontrollimine, kui pole kriitiline, et rakendus võib nil-i tõttu kokku kukkuda.
  2. Selge vale olek: Kui nil-i sunniviisiline välja võtmine näitab kriitilist viga programmi loogikas, mida tuleb kohe avastada (näiteks konfiguratsiooni viga või ebaõige andmeteadmine). Tootmises on sellised vead parem käsitleda elegantsemalt.
  3. forceUnwrap silumiseks: Mõnikord võib seda kasutada silumiseks, et kiiresti väärtust kontrollida, kuid see on ajutine lahendus.

Näide (väga ettevaatlik kasutus):

// Näide, kui olete *absoluutselt* kindel, et nib-fail eksisteerib
class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Kui MyView.xib ei eksisteeri, rakendus kukub.
        // See on OHTLIK kood tootmises!
        let myView = Bundle.main.loadNibNamed("MyView", owner: self, options: nil)![0] as! UIView
        view.addSubview(myView)
    }
}

Ei tohiks kasutada sunniviisilist välja võtmist järgmistes olukordades:

  • Kui on kahtlusi väärtuse olemasolu osas.
  • Kui töötlete kasutaja sisendandmeid või väliseid allikaid.
  • Enamikus tootmiskoodis, kus rakenduse kokku kukkumine on vastuvõetamatu.

Eelistatud alternatiivid:

  • if let või guard let tingimuslikuks välja võtmiseks.
  • nil-coalescing operaator (??) vaikimisi väärtuse määramiseks.
  • Optional chaining (?.) meetodite või omaduste kutsumiseks tingimuslikult.