无法转换'String?'类型的值在胁迫中输入'NSString'

时间:2016-11-02 15:46:14

标签: swift xcode nsstring

我试图为各种数学公式制作这个计算器而且我已经陷入了困境。我正在关注这个tutorial

这是我的代码:

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 个答案:

答案 0 :(得分:1)

在可能的情况下,更喜欢让var。您不需要使用NSString。你可以将String转换为Float?。你需要打开文本属性这是一个字符串? (如果你有关于变量选项点击类型的问题,它会告诉你)和浮动?转化率:

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)"
}