【问题标题】:equation displays "Cannot convert value of type 'String' to expected argument type 'Int'"方程式显示“无法将 'String' 类型的值转换为预期的参数类型 'Int'”
【发布时间】:2021-04-03 03:06:55
【问题描述】:

我正在尝试在标签上显示一个数字,该数字由在文本字段框中输入的值计算得出。但是,我在尝试做等式时遇到了这个错误。我的代码如下。知道我需要更改哪些内容才能显示该答案吗?

 func calculateRewardPoints() -> Int {
            if currentLevelStepper.value == 1 {
                
                resultHeaderLabel.text = "60 Required Forge Points for Lvl 1"
              
                rewardLinkOne.text = "10"
                rewardLinkTwo.text = "5"
                rewardLinkThree.text = "0"
                rewardLinkFour.text = "0"
                rewardLinkFive.text = "0"
    
                var roundone =  round(((Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(10) )
                var roundtwo =  round(((Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(5) )
                var roundthree =  round(((Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(5) )
                var roundfour =  round(((Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(5) )
                var roundfive =  round(((Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(5) )
                
                rateRewardLinkOne.text = String(roundone)
                rateRewardLinkTwo.text = String(roundtwo)
                rateRewardLinkThree.text = String(roundthree)
                rateRewardLinkFour.text = String(roundfour)
                rateRewardLinkFive.text = String(roundfive)
              
                
                
                //rateRewardLinkFive.text = String(  ( (Double(bonusinput.isTextNumber().1) + Double(100)) / Double(100) ) * Double(5) )
    
              
       
                fpSecureLinkOne.text = "40"
                fpSecureLinkTwo.text = "40"
                fpSecureLinkThree.text = "45"
                fpSecureLinkFour.text = "45"
                fpSecureLinkFive.text = "45"
                
                
    /*(A)*/       var totalfp = 60
    /*(B)*/       var fpadded = String(Int(fpinput.isTextNumber().1))
    /*(C1)*/      var baserewardone = 10
    /*(C2)*/      var baserewardtwo = 5
    /*(C3)*/      var baserewardthree = 0
    /*(C4)*/      var baserewardfour = 0
    /*(c5)*/      var baserewardfive = 0
            
    /*(D)*/       var arcbonus = ((bonusinput.isTextNumber().1) + 100) / 100
                  var squaredone = (baserewardone * arcbonus) * 2
                  var squaredtwo = (baserewardtwo * arcbonus) * 2
                  var squaredthree = (baserewardthree * arcbonus) * 2
                  var squaredfour = (baserewardfour * arcbonus) * 2
                  var squaredfive = (baserewardfive * arcbonus) * 2
                
                
                var securefpthree = 45
                var securefpfour = 45
                var securefpfive = 45
                
// Where error occurs      // I need the fpSecure labels to be  ( (A-B) - ((C*D)*2) ) 
                fpSecureLinkOne.text = String((totalfp - fpadded) - squaredone)
                
            }

【问题讨论】:

  • 我不熟悉 swift,但它看起来像 calculateRewardPoints 返回一个 int,而您正在返回一个字符串。因此,如果您想返回一个字符串:“calculateRewardPoints() -> String”,或者如果您想返回一个 int:不要将 fpSecureLinkOne 转换为字符串。如果要显示计算结果,我认为您需要前者(“-> String”)。
  • 是的,我需要在标签上将 Int 显示为“字符串”
  • 好的,所以我认为第一行应该是“func calculateRewardPoints() -> String {”

标签: swift string integer


【解决方案1】:

这称为字符串插值

"\(your number)"

【讨论】:

  • 我把我的方程式放在那里,它仍然给我这个错误。
  • 在您设置为返回 Int 的函数签名中,正如我所见,您没有返回任何内容。这里应该发生什么?你想做什么?您在返回一些整数的函数中设置标签值?为什么?你能解释一下这个函数的目的吗?
猜你喜欢
  • 2017-01-09
  • 2018-10-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2016-01-14
  • 2019-05-12
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多