大佬教程收集整理的这篇文章主要介绍了ios – “无法使用’UITextField’类型的参数列表调用类型’Int’的初始值设定项”是什么意思?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
PS-这是我的所有代码 –
import UIKit class ViewController: UIViewController,UITextFieldDelegate { @IBOutlet weak var animalNum: UITextField! @IBOutlet weak var logLabel: UILabel! @IBOutlet weak var resetButton: UIButton! @IBOutlet weak var weight: UITextField! @IBOutlet weak var deh: UITextField! @IBOutlet weak var losses: UITextField! @IBOutlet var factor: [UITextField]! @IBOutlet weak var lrs24: UILabel! override func viewDidLoad() { super.viewDidLoad() // Handle the text field’s user input through delegate callBACks. animalNum.delegate = self } // MARK: UITextFieldDelegate func textFieldShouldReturn(textField: UITextField) -> Bool { // Hide the keyboard. textField.resignFirstResponder() return true } func textFieldDidEndEdiTing(textField: UITextField) { logLabel.text = textField.text } // MARK: Actions @IBACtion func setDefaultLabelText(sender: UIButton) { logLabel.text = "Default Text" } @IBACtion func textFieldsDidEndEdiTing(sender: AnyObject) { lrs24 = (30 * Int(weight)! + 70) * Int(factor)!; //+ Int(weight)! * Int(deh)! * 10 + Int(losses)! //(30 * &weight + 70) * &factor + &weight * &deh * 10 + &losses } }
这是您在textFieldsDidEndEdiTing函数中使用的代码
lrs24 = (30 * Int(weight)! + 70) * Int(factor)! ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | Defined as a UITextField! | | | | Defined as a [UITextField]!
你试图告诉Swift创建一个新的整数Int().要创建整数,您需要为Swift提供文本字段,权重和因子. Swift应该从哪里得到整数值? UITextField不是整数.
把它放到透视中,就像试图将苹果变成橙色一样 – 这是不可能的(除非你有黑魔法,但这是一个不同的主题).同样的想法也适用于此 – 您无法转换用户可以将文本输入数字的字段.它只是不起作用!
但是,您可以将字符串转换为整数,因为它包含可以初始化整数的数据.例如,使用Int(“7901”)将字符串“7901”转换为数字非常简单,因为您可以将Swift数据转换为整数.
如果要获取在文本字段中输入的文本,则必须使用UITextField.text
变量.例如,要获取在权重字段中输入的数字,您可以使用
//This should only be used if you are 100% sure that the text will be a number //If it isn't,using this code,the app will crash var weightInteger: Int = Int(weight.text)! //If you aren't 100% sure the input will be a number,you should use var weightInteger: Int = Int(weight.text) ?? 0
您将能够执行此操作,因为上面的Int初始化与String
我还假设因子变量不应该是[UITextField] !,它是UITextFields的数组(或列表).相反,它应该是一个UITextField! (当然,我可能错了,你可能实际上在该变量中存储了一个UITextFielD列表,在这种情况下你必须使用for循环来获取列表中的值.
如果要设置标签的文本,则必须使用UILabel.text
– 您不能只将uILabel设置为字符串.
所以,最后,假设该因素应该是一个UITextField!而不是[UITextField] !,你应该使用
let value: Int = (30 * (Int(weight.text) ?? 0) + 70) * (Int(factor.text) ?? 0) //You may want to change the last bit //(Int(factor.text) ?? 0) to (Int(factor.text) ?? 1) //Which would set the factor to "1" instead of "0" //if a non-Integer or nothing is inputed lrs24.text = "\(value)" //this sets the text of the label to //the value above. It has to be in the format //"\(X)" because we have to turn x into a String. //If you prefer,you Could also use String(X) //which would be String(value) in this example //that's personal preference,though
此外,虽然这与原始问题无关,但您应该对代码执行以下操作以使其更好
>你不需要;在行尾–Swift自动为你结束行>你应该避免强制解包(!运算符),除非你真的确定该值不会为零.而不是使用Int(X)!,你应该使用Int(X)?? 0,如果初始化的整数为nil,它将代替崩溃给出值“0”.
以上是大佬教程为你收集整理的ios – “无法使用’UITextField’类型的参数列表调用类型’Int’的初始值设定项”是什么意思?全部内容,希望文章能够帮你解决ios – “无法使用’UITextField’类型的参数列表调用类型’Int’的初始值设定项”是什么意思?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。