我建议阅读 The Swift Programming Language 以更好地了解 Swift 及其基本概念,因为这个问题相当基础。
你犯了几个错误:
if sunscreenName.text != nil && reapplyTime.text != nil {
这是错误的。在 Swift 中,如果您打算稍后使用该值,则应使用 if let 而不是与 nil 进行比较。与nil 相比,这些值是可选的,但if let 将它们展开。所以,改为这样做:
if let sunscreenText = sunscreenName.text, let reapplyText = reapplyTime.text {
现在您有了sunscreenText 和reapplyText 变量,它们的类型是String,而不是String?(即它们不是可选的)。
现在,有这两行。
sunscreen = sunscreenName.text!
reApplyTime = reapplyTime.text
您没有说是哪一个给出了错误,但无论哪种情况,问题都是相同的。首先,使用我们展开的sunscreenText 和reapplyText 变量而不是sunscreenName.text! 和reapplyTime.text。接下来,如果其中一个是Int 而不是String,则将其转换。 Swift 与 JavaScript 不同,它不会自动将值从一种类型转换为另一种类型,所以如果某个东西是字符串并且我们需要一个整数,我们必须自己进行转换。
(假设 reapplyTime 是给出错误的行:)
if let reapplyInt = Int(reapplyText) {
reapplyTime = reapplyInt
}
我们必须解包的原因是因为Int(String) 可以返回nil 如果字符串是不能转换为整数的东西。或者,我们可以只提供一个默认值:
reapplyTime = Int(reapplyText) ?? 0 // sets to 0 if it can't parse the string as an integer