2016-11-02 7 views
1

私はこの計算機をさまざまな数式のために作ろうとしていますが、私はこの時点で固執しています。私はこのtutorialタイプ 'String'の値を変換できません。 'NSString'を強制的に入力してください

次ここに私のコードですた。

import UIKit 

class pythagorasViewController: UIViewController { 


@IBOutlet weak var aLabel: UILabel! 
@IBOutlet weak var bLabel: UILabel! 
@IBOutlet weak var aField: UITextField! 
@IBOutlet weak var bField: UITextField! 
@IBOutlet weak var answerLabel: UILabel! 
@IBAction func calculateButton(_ sender: UIButton) { 
    var a = (aField.text as NSString).floatValue 
    var b = (bField.text as NSString).floatValue 
    var answer = sqrt(a*a + b*b) 
    answerLabel.text = "\(answer)" 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

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

} 

私はエラーを取得していますが、一部である:

var a = (aField.text as NSString).floatValue 
var b = (bField.text as NSString).floatValue 
+1

なぜ 'NSString'を使うのですか?スウィフトには「ストリング」があります。そして、 'NSNumberFormatter'を使用してユーザが入力した数値を実際の数値に変換しようとする方がはるかに優れています。 – rmaddy

+0

そして、あなたが有効でない値を入力するユーザに対処する必要があります。 – rmaddy

+0

多くのチュートリアルがたくさんあります。 – vadian

答えて

1

可能な場合は、VARにしましょう好みます。 NSStringを使う必要はありません。 StringをFloatにキャストできますか?文字列であるtextプロパティを両方ともアンラップする必要がありますか? (変数オプションのクリックについての質問がある場合、それはあなたに表示されます)とフロート?変換:

func calculateButton(_ sender: UIButton) { 
    guard let aText = aField.text, 
      let bText = bField.text, 
      let a = Float(aText), 
      let b = Float(bText) else { 
     return 
    } 
    let answer = sqrt(a*a + b*b) 
    answerLabel.text = "\(answer)" 
} 
+2

あなたのコードにキャストはありません。 'Float(aText)'はキャストではなく、変換です。有意差。 – rmaddy

関連する問題