如何解开可选字符串,然后将其转换为Double的数据类型?

问题描述 投票:0回答:1

我正在为我工​​作的公司设计一个应用程序,该应用程序使用基本的y = mx + c(如果您来自美国,则为y = mx + b)来获取2个校准值和2个输入值以输出刻度和偏移值。该应用程序从总共4个文本字段中获取用户输入,然后使用一些公式将其输出到文本视图中。我的问题是,在公式(除数,m_FinalScale,m_FinalOffset)中使用的输入值必须为“双精度”,而用户输入的值为“字符串?”因为它们来自文本字段。我该如何解包并将那些可选字符串转换为可使用的内容?

override func viewDidLoad() {
    super.viewDidLoad()

    Cal1Field.delegate = self
    Cal2Field.delegate = self
    Input1Field.delegate = self
    Input2Field.delegate = self

}

//Actions

@IBAction func CalibrateTapped(_ sender: Any) {

    var Divisor = 0.0, m_FinalScale = 0.0, m_FinalOffset = 0.0

    // this is what the formulas are

    Divisor = Input2Field.text - Input1Field.text
    m_FinalScale = (Cal2Field.text - Cal1Field.text)/Divisor
    m_FinalOffset = Cal1Field.text - (m_FinalScale*Input1Field.text)



}
swift user-input optional
1个回答
0
投票

您可以使用此扩展名

extension String {
    var convertItToDouble: Double? {
        return Double(self) 
    }
}

然后使用您的方法

@IBAction func CalibrateTapped(_ sender: Any) {
    var Divisor = 0.0, m_FinalScale = 0.0, m_FinalOffset = 0.0

    // this is what the formulas are

    if let doubleCal1Field = Cal1Field.text?.convertItToDouble,  
       let doubleCal2Field = Cal2Field.text?.convertItToDouble, 
       let doubleInput1Field = Input1Field.text?.convertItToDouble, 
       let doubleInput2Field = Input2Field.text?.convertItToDouble {

       Divisor = doubleInput2Field - doubleInput1Field
       m_FinalScale = (doubleCal2Field - doubleCal1Field)/Divisor
       m_FinalOffset = doubleCal1Field - (m_FinalScale*doubleInput1Field)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.