gpt4 book ai didi

ios - 正在传递 If 语句的第一部分;可选错误

转载 作者:行者123 更新时间:2023-11-29 01:17:02 25 4
gpt4 key购买 nike

首先,这是我简单的 GPA 小项目的链接:https://www.dropbox.com/sh/prkf2e3u6ok7jmo/AACY8b8_kDfigxluJyEzdZbGa?dl=0 .

import UIKit

class calccontroller: UIViewController {
@IBOutlet weak var GPA1: UITextField!
@IBOutlet weak var Credits1: UITextField!
@IBOutlet weak var GPA2: UITextField!
@IBOutlet weak var Credits2: UITextField!
@IBOutlet weak var answerLabel: UILabel!

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.
}


@IBAction func calculatorButton(sender: AnyObject) {

if GPA1 == nil || GPA2 == nil || Credits1 == nil || Credits2 == nil {
let title = "Oops"
let message = "Please add a value to each text field"
let okText = "OK"

let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

let okayButton = UIAlertAction(title: okText, style: UIAlertActionStyle.Cancel, handler: nil)
alert.addAction(okayButton)

presentViewController(alert, animated: true, completion: nil)
}
else
{



let gpa1text = Float(GPA1.text!)!
let gpa2text = Float(GPA2.text!)!
let credits1text = Float(Credits1.text!)!
let credits2text = Float(Credits2.text!)!

let firstGrade = gpa1text * credits1text
let secondGrade = gpa2text * credits2text
let allGPA = firstGrade + secondGrade
let allCredits = credits1text + credits2text
let finalGrade = allGPA / allCredits

answerLabel.text = "\(finalGrade)"

GPA1.resignFirstResponder()
GPA2.resignFirstResponder()
Credits1.resignFirstResponder()
Credits2.resignFirstResponder()
}

}


}

无论如何,我设置了一个简单的 4 个文本字段、1 个按钮和 1 个标签。我以为我的代码设置成功了,如果每个文本字段都没有值,则会弹出一个 ui 警报值,要求在每个文本框中输入一个值。如果有 4 个值,则应用程序将完成“数学运算”。但是,当我将所有 4 个留空或者如果我在所有 4 个都已填满时单击按钮然后删除 1 个文本字段,我的应用程序崩溃......“在展开可选值时意外发现 nil”。我觉得这很令人沮丧(这对我来说可能是一个简单的错误,但在我看来我不应该拥有这个值,因为我的弹出警报是为了在文本字段为 nil 时使用。

谢谢你抽出时间,乔恩。

最佳答案

你的 if 逻辑不正确。

由于您创建了 IBOutlet 并检查了 nil,因此如果您从 Storyboard或 nib 实例化 View Controller ,它将始终返回 false。

你要做的是检查它的值是否为空。所以像这样的东西应该可以解决问题

if GPA1.text.isEmpty || GPA2.text.isEmpty || Credits1.text.isEmpty || Credits2.text.isEmpty {
// show alert
} else {
// do your calculation
}

关于ios - 正在传递 If 语句的第一部分;可选错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051327/

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