【问题标题】:Swift Error: Cannot find an initializer for type 'Double' that accepts an argument list of type '(String)'Swift 错误:找不到接受类型为“(String)”的参数列表的“Double”类型的初始化程序
【发布时间】:2016-02-19 09:39:37
【问题描述】:

我正在尝试从标记为“temperatureTextField”的文本字段中获取数据并将其分配给“t”,它是一个 Double。理想情况下,用户应该向 temperatureTextField 添加一个数值。

这是我的方法:

@IBOutlet weak var temperatureTextField: UITextField!

@IBAction func convert(sender: AnyObject) {
    let t = Double(temperatureTextField.text!)
    let tempM = TemperatureModel(temp: t!)
    temperatureTextField.text = String(tempM.toCelsius())
}

红色感叹号来自“let t = Double(temperatureTex...)”这一行

【问题讨论】:

    标签: xcode swift compiler-errors syntax-error


    【解决方案1】:

    正如 Eric 所建议的,我遇到了这个问题,因为我运行的是过时的 xcode 版本。 这是我的代码看起来喜欢的样子,以防有人遇到麻烦并且无法更新:

    let t = (inputText.text! as NSString).doubleValue
    let tempModel = TemperatureModel(temp: t)
    inputText.text = "\(tempModel.toCelsius())"        
    

    【讨论】:

      【解决方案2】:

      您可能使用的是 Xcode 6,因此是 Swift 1.2,但 Double 的 String 初始化程序仅在 Swift 2 (Xcode 7) 中可用。

      你总是可以使用 NSString 的 doubleValue 属性:

      let t = (temperatureTextField.text! as NSString).doubleValue
      

      但我建议尽快使用 Xcode 7 和 Swift 2。

      【讨论】:

        猜你喜欢
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多