我试图在我的项目中添加一个评分系统:
var userRating: userRating! {
didSet {
good.setTitle(" \(userRating.numberOfGood)", for: [])
}
}
@IBAction func goodReview(_ sender: UIButton) {
userRating.good() -> ERROR
good.setTitle(" \(userRating.numberOfGood)", for: [])
}userRating类:
var numberOfGood = 0
func good() {
numberOfGood += 1
}但是每次单击按钮时,我都会得到线程1:致命错误:意外地发现为零,同时隐式地将可选值解压缩为错误。
发布于 2019-12-06 16:26:13
问题是userRating变量没有实例化为UserRating类,因此它的'good‘函数是零。下面是一些需要遵循的代码:
class ViewController: NSViewController {
class UserRatingClass {
var numberOfGood = 0
func good() {
numberOfGood += 1
}
}
var userRating: UserRatingClass! {
didSet {
let x = userRating.numberOfGood
self.goodLabel.setTitle("rating: \(x)"
}
}在viewDidLoad中,设置userRating
override func viewDidLoad() {
super.viewDidLoad()
self.userRating = UserRatingClass() //this set up the var然后在按钮动作中
@IBAction func goodReview(_ sender: UIButton) {
userRating.good()
let x = userRating.numberOfGood
self.goodLabel.setTitle("rating: \(x)"
}另外,正如其他答案中提到的,请将类名大写,通常使用“self.‘”引用类vars是很好的做法。
发布于 2019-12-05 18:29:49
这是会发生的,因为根本不初始化userRating对象。只需将这一行添加到viewDidLoad()方法中即可。userRating = UserRating()。希望它能帮到你
https://stackoverflow.com/questions/59199676
复制相似问题