我正在尝试从textfield传递数据,使用委托返回上一个控制器。当我尝试在此调用中分配Int值时,我陷入困境。 这个问题相当容易,但我找不到简单的解决方案。我一直在尝试使用其他属性的不同方法来保存这个值,但是没有成功。我应该如何正确转换 budgetAmount.text ?
protocol BudgetDelegate: class {
func enteredBudgetData(info: String, info2: Int)
}
class AddBudgetViewController: UIViewController {
var budget: Budget?
weak var delegate: BudgetDelegate? = nil
@IBOutlet weak var budgetName: UITextField!
@IBOutlet weak var budgetAmount: UITextField!
//
@IBAction func saveContent(_ sender: UIButton) {
if ((budgetName.text?.isEmpty)! && (budgetAmount.text?.isEmpty)!) {
navigationController?.pop(animated: true)
} else {
-> delegate?.enteredBudgetData(info: budgetName.text!, info2: budgetAmount.text!)
navigationController?.pop(animated: true)
}
}
}
错误无法转换类型'字符串'的值预期参数类型' Int'
答案 0 :(得分:3)
协议方法的info2
参数属于Int
,但您传递budgetAmount.text!
,当然是String
。您需要传递Int
。
也许您需要将文本字段中的文本转换为Int
。
delegate?.enteredBudgetData(info: budgetName.text!, info2: Int(budgetAmount.text!) ?? 0)
顺便说一句 - 你正在对!
运算符进行几次可怕的使用。你应该花时间学习选项以及如何安全地使用它们。
答案 1 :(得分:0)
因此,根据您的问题,您只想传递来自Int
的{{1}}数据。根据您的描述,您对委派没有任何问题。
将UITextField
转换为String
非常简单:
示例:
Int