2016-06-30 8 views
0

Ich weiß, dass es bereits einige Antworten gibt, aber keine von ihnen scheint mein Problem zu lösen, da sie über Variablen oder Konstanten in anderen Klassen sprechen, aber meine ist nicht t.Verwendung von nicht aufgelösten Bezeichnern, Teil einer einzelnen Klasse

Hier ist meine viewcontroller.swift (ich habe keinen Code in anderen Dateien gemacht)

class ViewController: UIViewController, UITextFieldDelegate { 

    // MARK: Properties 

    @IBOutlet weak var textFieldA: UITextField! 

    @IBOutlet weak var textFieldB: UITextField! 

    @IBOutlet weak var textFieldC: UITextField! 

    @IBOutlet weak var answerLabel: UILabel! 

    @IBOutlet weak var answerLabelNegative: UILabel! 

    @IBOutlet weak var whatEquation: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     textFieldA.delegate = self 
     textFieldB.delegate = self 
     textFieldC.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: UITextFieldDelegate 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     // Hide the keyboard. 
     textFieldA.resignFirstResponder() 
     textFieldB.resignFirstResponder() 
     textFieldC.resignFirstResponder() 
     return true 
    } 



    // MARK: Actions 

    @IBAction func solveButton(sender: AnyObject) { 

     let a:Double! = Double(textFieldA.text!)  // textfieldA is UITextField 
     let b:Double! = Double(textFieldB.text!) // textfieldB is UITextField 
     let c:Double! = Double(textFieldC.text!) // textFieldC is UITextField 
     let z: Double = (b * b) + 4 * a * c 
     answerLabel.text = "Positive equation x = \(-b + (sqrt(z)/2 * a))" 
     answerLabelNegative.text = "Negative equation x = \(-b - (sqrt(z)/2 * a))" 




     // These conditional statements are used to determine whether a + or a - should be infron of th number 

     if a < 0 { 
      let aValue: String = "-" 
     } else { 
      let aValue: String = " " 
     } 

     if b < 0 { 
      let bValue: String = "-" 
     } else { 
      let bValue: String = " " 
     } 

     if c < 0 { 
      let cValue: String = "-" 
     } else { 
      let cValue: String = " " 
     } 

     whatEquation.text = "\(aValue)\(a) \(bValue)\(b) \(cValue)\(c)" //This is where the error occurs, on the "whatEquation.text" line 

    } 




} 
+1

'self.whatEquation.text' vielleicht? – Dershowitz123

Antwort

2

Sie definieren aValue, bValue und cValue innerhalb des if-Anweisungen, so dass sie nur innerhalb des existieren, wenn Anweisungen, wo sie definiert sind und nicht in der letzten Zeile sichtbar sind, in der sie den Text gesetzt haben.

Sie sollten es so ändern, dass sie in einem Bereich definiert sind, in dem Ihre letzte Zeile sie sehen kann.

let aValue = a < 0 ? "-" : " " 
let bValue = b < 0 ? "-" : " " 
let cValue = c < 0 ? "-" : " " 

whatEquation.text = "\(aValue)\(a) \(bValue)\(b) \(cValue)\(c)" 
+0

Vielen Dank, ich schätze es. – RufusV

0

aValue, bValue und cValue sind im if Umfang definiert und nicht außerhalb des Blocks, wenn zugegriffen werden kann. Sie müssen sie unter Ihren @IBOutlet Definitionen (als globale Variablen) definieren, damit Sie sie überall in Ihrem Code verwenden können.

var aValue: String! 
var bValue: String! 
var cValue: String! 

Und in Ihrem wenn Block die let entfernen, wenn Sie den Text in den a b und c Werte zuweisen.

Verwandte Themen