【发布时间】:2016-03-09 07:56:02
【问题描述】:
*快速说明,图片将有助于解释我的情况。所以目前,我只添加 Cum。我的 GPA 计算器应用程序的学分和 GPA 文本字段。这两个字段是可选的,而下面的其他 4 个字段不是。这是我的大部分代码(请暂时原谅冗余)。
if CumCredits == "" || CumGPA == ""
{
let credit1 = Float(Credits1TF.text!)!
let credit2 = Float(Credits2TF.text!)!
let grade1 = Float(Grade1TF.text!)!
let grade2 = Float(Grade2TF.text!)!
let firstgrade = credit1 * grade1
let secondgrade = credit2 * grade2
let allcredits = credit1 + credit2
let allgrades = firstgrade + secondgrade
let finalgrade = round((allgrades / allcredits) * 10000)/10000
GPALabel.text = "Your Semester GPA is: \(finalgrade)"
GPALabel.hidden = false
Class1TF.resignFirstResponder()
Class2TF.resignFirstResponder()
Credits1TF.resignFirstResponder()
Credits2TF.resignFirstResponder()
Grade1TF.resignFirstResponder()
Grade2TF.resignFirstResponder()
}
else {
let credit1 = Float(Credits1TF.text!)!
let credit2 = Float(Credits2TF.text!)!
let grade1 = Float(Grade1TF.text!)!
let grade2 = Float(Grade2TF.text!)!
let firstgrade = credit1 * grade1
let secondgrade = credit2 * grade2
let allcredits = credit1 + credit2
let allgrades = firstgrade + secondgrade
let finalgrade = round((allgrades / allcredits) * 10000)/10000
Class1TF.resignFirstResponder()
Class2TF.resignFirstResponder()
Credits1TF.resignFirstResponder()
Credits2TF.resignFirstResponder()
Grade1TF.resignFirstResponder()
Grade2TF.resignFirstResponder()
CumCredits.resignFirstResponder()
CumGPA.resignFirstResponder()
let CCredits = Float(CumCredits.text!)!
let CGPA = Float(CumGPA.text!)!
//top math
let LastGrade = CCredits * CGPA
let MegaCredits = allcredits + CCredits
let MegaGPA = allgrades + LastGrade
let MegaEverything = (round((MegaGPA / MegaCredits) * 10000)/10000) - 0.0001
CumTotal.hidden = false
CumTotal.text = "Your expected cumulative GPA is: \(MegaEverything)"
GPALabel.text = "Your Semester GPA is: \(finalgrade)"
GPALabel.hidden = false
Class1TF.resignFirstResponder()
Class2TF.resignFirstResponder()
Credits1TF.resignFirstResponder()
Credits2TF.resignFirstResponder()
Grade1TF.resignFirstResponder()
Grade2TF.resignFirstResponder()
CumCredits.resignFirstResponder()
CumGPA.resignFirstResponder()
}
目前(据我所知),如果暨。 Credits 和 GPA 保持不变,执行我的语句的顶部,如果它们不为空,则执行 else 语句。
所以我的问题...如果我为每个字段输入一个值,那么所有单词都没有问题。但是,如果我离开暨。 Credits 或 GPA 字段为空,我的程序崩溃,我得到典型的“在展开可选值时意外发现 nil”处理任一
let CCredits = Float(CumCredits.text!)!
let CGPA = Float(CumGPA.text!)!
我尝试了许多可能的解决方案:重写代码和重新编写代码,但我似乎无法理解。你能提出什么建议?
任何帮助将不胜感激!
【问题讨论】:
标签: ios swift if-statement textbox optional