ios - Swift 中“String”无法转换为 'Int'

标签 ios swift

在我的添加函数中,其中 answerLabel.text 给了我一个错误。它说'String'不能转换为'Int',我试图获取从第二步2得到的内容并放入我的函数的参数

//Adding Function
        changingSignsLabel.text = "+"
        let firstDenomInTextField:Double! = (firstDenominatorTextField.text as NSString).doubleValue
        let firstNumInTextField:Double! = (firstNumeratorTextField.text as NSString).doubleValue
        let firstWholeInTextField:Double! = (firstWholeNumberTextField.text as NSString).doubleValue

        let secondDenomInTextField:Double! = (secondDenominatorTextField.text as NSString).doubleValue
        let secondNumInTextField:Double! = (secondNumeratorTextField.text as NSString).doubleValue
        let secondWholeInTextField:Double! = (secondWholeNumberTextField.text as NSString).doubleValue

        var firstStep = firstDenomInTextField! * firstWholeInTextField! / firstDenomInTextField!

        var secondStep = firstStep + firstNumInTextField! / firstDenomInTextField!

        var thirdStep = secondDenomInTextField! * secondWholeInTextField! / secondDenomInTextField!
        var fourthStep = thirdStep + secondNumInTextField! / secondDenomInTextField!

        var calculatedAnswer = (secondStep + fourthStep)

        answerLabel.hidden = false

        var firstStep2 = calculatedAnswer / 1
        var secondStep2 = "\(firstStep2 * 10 * 10)"


        answerLabel.text = printSimplifiedFraction(Numerator: secondStep2)

我的功能

func printSimplifiedFraction(Numerator numerator: Int, Denominator denominator: Int = 100)
    {
        var finalNumerator = numerator;
        var finalDenominator = denominator;

        var wholeNumbers:Int = numerator / denominator;
        var remainder:Int = numerator % denominator;

        //println("wholeNumbers = \(wholeNumbers), remainder = \(remainder)");
        //println("\(denominator) % \(remainder) = \(denominator % remainder)");

        if(remainder > 0)
        {
            // see if we can simply the fraction part as well
            if(denominator % remainder == 0) // no remainder means remainder can be simplified further
            {
                finalDenominator = denominator / remainder;
                finalNumerator = remainder / remainder;
            }
            else
            {
                finalNumerator = remainder;
                finalDenominator = denominator;
            }
        }

        if(wholeNumbers > 0 && remainder > 0)
        {
            // prints out whole number and fraction parts
            println("Simplified fraction of \(numerator)/\(denominator) = \(wholeNumbers) \(finalNumerator)/\(finalDenominator)");
        }
        else if (wholeNumbers > 0 && remainder == 0)
        {
            // prints out whole number only
            println("Simplified fraction of \(numerator)/\(denominator) = \(wholeNumbers)");
        }
        else
        {
            // prints out fraction part only
            println("Simplified fraction of \(numerator)/\(denominator) = \(finalNumerator)/\(finalDenominator)");

        }
    }

我的问题如何让函数接受我的变量?

最佳答案

我相信这就是你想要的,首先在你的添加函数中它应该是:

var firstStep2 = calculatedAnswer / 1
var secondStep2 = Int(firstStep2 * 10 * 10)
answerLabel.text = printSimplifiedFraction(Numerator: secondStep2)

然后你的 print... 方法应该像这样改变(注意它返回一个字符串):

func printSimplifiedFraction(Numerator numerator: Int, Denominator denominator: Int = 100) -> String
{
    // I haven't looked into this bit
    ...

    if(wholeNumbers > 0 && remainder > 0)
    {
        return ("Simplified fraction of \(numerator)/\(denominator) = \(wholeNumbers) \(finalNumerator)/\(finalDenominator)")
    }
    else if (wholeNumbers > 0 && remainder == 0)
    {
        return ("Simplified fraction of \(numerator)/\(denominator) = \(wholeNumbers)")
    }
    else
    {
        return ("Simplified fraction of \(numerator)/\(denominator) = \(finalNumerator)/\(finalDenominator)")
    }
}

此外,查看您的代码,我认为您可以大大简化逻辑(我也按照您在评论中所说的方式转换为整数):

let firstDenomInTextField = firstDenominatorTextField.text.toInt()
let firstNumInTextField = firstNumeratorTextField.text.toInt()
let firstWholeInTextField = firstWholeNumberTextField.text.toInt()

let secondDenomInTextField = secondDenominatorTextField.text.toInt()
let secondNumInTextField = secondNumeratorTextField.text.toInt()
let secondWholeInTextField = secondWholeNumberTextField.text.toInt()

var firstStep = firstWholeInTextField! + firstNumInTextField! / firstDenomInTextField!
var secondStep = secondWholeInTextField! + secondNumInTextField! / secondDenomInTextField!
var calculatedAnswer = (firstStep + secondStep)
var numerator = Int(calculatedAnswer * 10 * 10)
answerLabel.text = printSimplifiedFraction(Numerator: numerator)

关于ios - Swift 中“String”无法转换为 'Int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417541/

相关文章:

ios - 让 MPRemoteCommandCenter.shared() 在 tvOS 中工作

ios - 如何将 UILabel 的顶部与另一个 UILabel 的顶部对齐?

ios - 在容器 View 中导航时,Unwind Segue 不起作用

ios - UIImage 未使用 AspectFit 填充 UIImageView

iOS 10 : Add sticker extension to an existing Application

ios - 隐藏导航栏时保持状态栏颜色

ios - 在一个 iOS 二进制文件中解析和 AdMob?

ios - UIScrollView 或 UICollectionView 按从 firebase 调用的顺序滑动图像?

swift - 如何从类数组中获取不同的值?

ios - 将自定义 swift 对象作为输入传递给 javascript 方法