Swift: Räkna ut tal och visa det i en label

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Hej,

Jag har precis börjat med Swift. Men jag har stött på ett problem, att användaren ska fylla i två tal som sedan ska presenteras i en label när hen trycker på en knapp. När hen tryckt på knappen så ska svaret visas i en ny storyboard jag gjort. Men det går inte jag får alla möjliga fel beroende på vad jag gör. Dock så får jag inga varningar med koden nedanför. Men när jag tryck på knappen i simulatorn så får jag ett felmeddelande: EXC_BAD_INSTRUCTION... bla bla.

Har ni några bra tips på hur jag ska göra?

Här är koden:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var inputMellanRum: UITextField!
    
    @IBOutlet var inputDimension: UITextField!
    
    @IBOutlet weak var resStolpar: UILabel!

    @IBAction func beräknaBtn(sender: AnyObject) {
        
        let nummer1 = Int(inputLängd.text!)
        let nummer2 = Int(inputMellanRum.text!)
        
        let svar: Int! = nummer1! / nummer2!
        resStolpar.text = String(svar)
    }

Kan det bero på att du använder åäö?

Ursprungligen av keptang:

Kan det bero på att du använder åäö?

Kan det vara så enkelt? Är det bara att ändra till AAO då eller?

  • Medlem
  • 2015-11-29 19:58

Jag skulle nog testa att köra lite mera defensivt och inte använda "!" överallt.
Om t.ex. inputLängd skulle vara null så kraschar det nog...

1) åäö i variabelnamn är inga problem i Swift, du kan t.om. använda Emojis om du vill

2) Vanligt misstag är att skapa sina outlets men glömma att koppla dem till sina kontroller. Kolla t.ex. att ringen i marginalen bredvid @IBOutlet är ifylld

3) Som wlao skrev så ska man vara försiktig med "!". Man ska vara absolut säker på att värdet inte kan vara nil och Int(...) kommer t.ex. returnera nil om användaren matat in bokstäver eller annat som inte kan tolkas som nummer. Bättre är att använda konstruktioner som "if let nummer = Int(nummerSträng) ..." och "guard let nummer = Int(nummerSträng) else ..."

1
Bevaka tråden