我创建了一个iOS应用,它将输入的数字乘以滑块中的数字。请原谅我的无知,但正如你所知,我只是在学习。用户输入其编号的部分是乘数文本字段。我试图将其转换为“Int
”,但它无效。
这是错误:
二进制运算符'*'不能应用于'Float'类型的操作数 '诠释?'
以下是代码:
@IBOutlet weak var multiplier: UITextField!
@IBOutlet weak var sliderLabel: UILabel!
@IBOutlet weak var sliderValue: UISlider!
@IBAction func sliderController(sender: AnyObject) {
table.reloadData()
sliderLabel.text = "\(sliderValue.value)"
}
@IBOutlet weak var table: UITableView!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var numbers = multiplier.text.toInt()
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
let timesTable = Int(sliderValue.value * numbers)
cell.textLabel?.text = String(timesTable * (indexPath.row + 1))
return cell
}
答案 0 :(得分:0)
那是因为你的slider.value返回一个Float。您正在尝试转换它的结果,但您需要将slider.value转换为Int以将其乘以Int的数字。试试这样:
注意:如Josh所述,您还需要解包toInt()可选结果。您可以使用 ”??” nil合并运算符,如果输入无效,则返回0。
let numbers = multiplier.text.toInt() ?? 0
let timesTable = Int(sliderValue.value) * numbers
答案 1 :(得分:0)
请记住,toInt()返回一个可选项,因此在尝试将它乘以sliderValue时需要将其解包。