在swift中调用函数

时间:2015-01-04 18:03:54

标签: swift

在构建iOS应用程序时,我遇到了在Swift中调用该函数的问题。

@IBOutlet weak var vyseHypoteky: UITextField!
@IBOutlet weak var dobaSplaceni: UITextField!
@IBOutlet weak var urokovaSazba: UITextField!
@IBOutlet weak var mesicniSplatka: UITextField!

@IBAction func zmenaVyseHypoteky(sender: UISlider) {
    var currentValue = Int(sender.value)
    vyseHypoteky.text = "\(currentValue)"
    vypoctiSplatku()
}

@IBAction func zmenaDobySplaceni(sender: UISlider) {
    var currentValue = Int(sender.value)
    dobaSplaceni.text = "\(currentValue)"
}

@IBAction func zmenaUrokoveSazby(sender: UISlider) {
    var currentValue = Int(sender.value)
    urokovaSazba.text = "\(currentValue)"
}

func vypoctiSplatku () {
    let HU:Int? = vyseHypoteky.text.toInt()
    let ipa:Int? = urokovaSazba.text.toInt()
    let n:Int? = dobaSplaceni.text.toInt()

    var ipm = ipa! / 12

    var zavorka = 1+ipm
    var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)

    var citatel = HU! * ipm * vypoctenaZavorka
    var jmenovatel = vypoctenaZavorka - 1

    var splatka = citatel / jmenovatel

    mesicniSplatka.text = ("\splatka")
    }

func mocnina (mocnenec: Int, mocnitel: Int) -> Int {
    var mocnina = 1
    for _ in 1...mocnitel {
        mocnina *= mocnenec
    }
    return mocnina
    }

该应用正按我的公式计算一个数字。我想用我的函数计算x ^ y,这是" mocnina"函数我想要使用两个int,x是" mocnenec"而y是" mocnitel"。

最后我想从变量" splatka"发送最终的int。提交文本" mesicniSplatka"。

但是我在调​​用函数时遇到错误" mocnina" - > var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)

Extraneous argument label 'mocnenec:' in call Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?

最后是mesicniSplatka.text = ("\splatka")

Invalid escape sequence in literal

如何解决? Thx用于帮助一个新手:)

2 个答案:

答案 0 :(得分:0)

在您的代码中,n声明为Int?类型,表示“可选Int”。这是正常的,因为toInt()函数不能保证成功,如果文本不能转换为整数,则可能返回nil。所以,你需要先解开它,如下所示:var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)。或者,如果您不确定字符串的转换是否成功,请执行以下操作:

let HU:Int? = vyseHypoteky.text.toInt()
let ipa:Int? = urokovaSazba.text.toInt()
let n:Int? = dobaSplaceni.text.toInt()

if ipa != nil {
    var ipm = ipa! / 12

    var zavorka = 1+ipm
    if n != nil {
        var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)

        // etc...

    }
}

答案 1 :(得分:0)

问题是n是一个包裹的:

var n:Int?

所以你有几个选项,你可以在你使用它时更改你的代码来打开它(在这之前检查nil可能是一个好主意,因为如果{{1}这会导致异常}是nil):

n

或者你可以在创建时解开它:

var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)

如果您想更好地理解“何时使用选项”,我已就此主题撰写了一个很长的解释:UIViewController variables initialization