我需要增加文本字段的值。我收到了一个错误。
@OneToOne(fetch = FetchType.LAZY), to @OneToOne(optional = false, fetch = FetchType.LAZY)
我遇到的问题是将文本字段的原始值增加1.当我这样做时,我有这样的信息:
"可选类型的值'字符串?'"
答案 0 :(得分:0)
即使这个问题质量很低,我最好的猜测是标签的文字不是强行打开的,这就是错误所说的。只需在!
之后添加nbre.text
:
nbre.text = Int(nbre.text!) + 1
您还需要将Int
转换回String
:
nbre.text = String(Int(nbre.text!)! + 1)
答案 1 :(得分:0)
尝试使用上述代码并找到:
可选类型的值'字符串?'
您应该通过添加感叹号来解包该值,但如果标签不包含该值,则可能会导致崩溃。因此,我们最好使用if-let
- >检查价值。 Increment
- > assign to label
@IBOutlet var nbre: UILabel!
@IBAction func incrementor(_ sender: UIButton) {
if let text = nbre.text, let number = Int(text) {
nbre.text = String(number + 1)
}
}
答案 2 :(得分:0)
错误的原因是因为text
的{{1}}属性是可选字符串,而UILabel
初始值设定项需要非可选Int
。然后,您尝试将生成的String
值分配给Int
属性。您无法将text
值分配给Int
属性。
但这里有一个更大的问题。您错误地使用标签作为数据来源来跟踪计数器。这是一个糟糕的设计。
正确的解决方案是拥有一个实际的String
属性来跟踪当前计数。然后将标签的Int
设置为此计数属性的值。
text
最有可能在import UIKit
class FirstViewController: UIViewController {
@IBOutlet var nbre: UILabel!
var count = 0
@IBAction func incrementer(_ sender: UIButton) {
count += 1
nbre.text = "\(count)"
}
中,您需要设置标签的初始值:
viewDidLoad