将 Int 属性从文本字段传回控制器
Posted
技术标签:
【中文标题】将 Int 属性从文本字段传回控制器【英文标题】:Passing Int property from textfield back to controller 【发布时间】:2017-10-06 17:37:19 【问题描述】:我正在尝试使用委托将数据从文本字段传递回前一个控制器。当我尝试在此调用中分配 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)
错误无法将“String”类型的值转换为预期的参数类型“Int”
【问题讨论】:
到底是什么问题?您可以发布代表的代码吗? CSjunkie,添加了错误描述。我必须输入文本字段,其中一个是金额字段,我想在其中输入 Int 值。 看看下面 rmaddy 的解决方案,问题是在将字符串传递给函数之前,您没有将字符串转换为 Int。 【参考方案1】:您的协议方法的info2
参数是Int
类型,但您传递的budgetAmount.text!
当然是String
。你需要传递一个Int
。
也许您需要将文本字段中的文本转换为Int
。
delegate?.enteredBudgetData(info: budgetName.text!, info2: Int(budgetAmount.text!) ?? 0)
顺便说一句-您正在对!
运算符进行几次糟糕的使用。您应该花时间学习可选选项以及如何安全地使用它们。
【讨论】:
是的,感谢您的快速响应和输入。我失踪了?? 0 你也错过了到Int
的转换。
我已经尝试过这种转换,但没有在上面输入这部分。
我将!
运算符称为“crash if nil”运算符。新的 Swift 开发人员应该假装它不存在,直到他们对可选项有了充分的理解。
@DuncanC 遗憾的是,这是 Xcode 的错,因为它建议您在尝试将可选值传递给非可选值时添加 !
。【参考方案2】:
因此,根据您的问题,您只想传递来自UITextField
的Int
数据。而且根据您的描述,委托没有任何问题。
将String
转换为Int
很简单:
例子:
let num = "1"
if let intNum = Int(num)
// There you have your Integer.
【讨论】:
以上是关于将 Int 属性从文本字段传回控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何将 int 值加载到文本字段并显示在另一个集合视图控制器的标签上