如何在Swift中正确计算年龄?

时间:2014-11-28 03:44:08

标签: ios swift

我想制作一个按钮来计算不同的方程式。

我所拥有的是我在文本字段中输入的任何数字乘以7。

但是我想完全改变它:我想完全删除乘法函数。

如果用户输入1,则按下按钮只显示7 如果用户输入2,则按下按钮只显示8 如果用户输入3,则按下按钮只显示9

基本上将10个选项中的预设回复(用户将被要求输入1 - 10)并且我将在标签框中吐出相应的答案。

class ViewController: UIViewController {

    @IBOutlet weak var CatAge: UITextField!
    @IBOutlet weak var message: UILabel!

    @IBAction func ButtonPressed(sender: AnyObject) {
        var age = CatAge.text.toInt()
        age = age! * 7
        message.text = "Thats equal to \(age!) in cat years"
   }
}

2 个答案:

答案 0 :(得分:2)

如果我正确地阅读此内容,您只需要为其输入的内容添加6即可。在这种情况下,您的答案很简单:

@IBAction func ButtonPressed(sender: AnyObject) {
    var age: Int = CatAge.text.toInt()!
    age += 6
    message.text = "Thats equal to \(age) in cat years"
}

否则,如果您正在寻找更依赖于实际输入内容的内容,您可能会寻找switch statement,其类似于:

switch age {
    case 1:
        age = 7
    case 2:
        age = 10
    case 3:
        age = 15
    case 4:
        age = 22
    case 5:
        age = 27
    case 6:
        age = 33
    case 7:
        age = 40
    case 8:
        age = 46
    case 9:
        age = 51
    case 10:
        age = 60
    default:
        age = 0
}

答案 1 :(得分:1)

你可以用字典简单地做到这一点。

@IBAction func ButtonPressed(sender: AnyObject) {
    let convert = [1:7, 2:8, 3:9, 4:10, 5:11, 6:12, 7:13, 8:14, 9:15, 10:16]
    if let age = convert[CatAge.text.toInt() ?? 0] {
        message.text = "Thats equal to \(age) in cat years"
    } else {
        message.text = "Invalid value"
    }
}

如果有值,我使用 nil coalescing operator ??安全地展开CatAge.text.toInt(),否则如果文本字段为0无法转换为Int。如果文本字段包含不在字典中的Int,则convert中的查找将返回nil。在这种情况下,可选绑定将失败,并且消息将为“无效值”。