我怎么做是这样输入的数字乘以滑块号

时间:2015-06-16 04:56:27

标签: xcode swift

我创建了一个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

}

2 个答案:

答案 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时需要将其解包。