gpt4 book ai didi

swift - 将类型 'String?' 的值转换为类型 'NSString'

转载 作者:行者123 更新时间:2023-11-28 10:52:01 24 4
gpt4 key购买 nike

我正在按照 Swift 1.2 的一本书 [1] 上的说明进行操作,该书介绍了如何使用一个文本字段、一个按钮和一个结果标签制作一个简单的温度转换应用程序。我正在使用 Swift 3。您在文本字段中输入温度,按下“转换”按钮,您应该会得到结果,但我得到“无法转换类型为‘字符串’的值?”在强制中键入“NSString”。

import UIKit

class ViewController : UIViewController {

@IBOutlet weak var tempText : UITextField!

@IBOutlet weak var resultLabel : UILabel!

override func viewDidLoad() {

super.viewDidLoad()
}

@IBAction func convertTemp( _ sender: Any ) {

let fahrenheit = ( tempText.text as NSString ).doubleValue
let celsius = ( fahrenheit - 32 ) / 1.8
let resultText = "Celsius \(celsius)"
resultLabel.text = resultText
}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()
}
}

我可以像这样在后面加一个感叹号:

    let fahrenheit      = ( tempText.text as! NSString ).doubleValue

但我仍然收到警告:“Cast from 'String?'到不相关的类型 'NSString' 总是失败”。

这应该如何在 Swift 3 中完成?

[1] 尼尔·史密斯。 2015. iOS 8 App Development Essentials - 第二版:学习使用 Xcode 和 Swift 1.2 开发 iOS 8 Apps。书号 978-1511713337.

最佳答案

将类型转换为 NSString 以获得 Double 是一个非常糟糕的习惯(即使在 Swift 1 中也是如此)。

一个安全的 Swift 3 解决方案是可选地绑定(bind) text 属性和 Double 转换

@IBAction func convertTemp(_ sender: Any ) {

if let degrees = tempText.text, let fahrenheit = Double(degrees) {
let celsius = ( fahrenheit - 32 ) / 1.8
let resultText = "Celsius \(celsius)"
resultLabel.text = resultText
} else {
resultLabel.text = "Conversion failed"
}
}

关于swift - 将类型 'String?' 的值转换为类型 'NSString',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45721454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com