按下按钮时调用 nil 函数



我尝试为我的项目添加一个评级系统:

var userRating: userRating! {
didSet {
good.setTitle("👍 (userRating.numberOfGood)", for: [])
}
}
@IBAction func goodReview(_ sender: UIButton) {
userRating.good() -> ERROR
good.setTitle("👍 (userRating.numberOfGood)", for: [])
}

用户评级类:

var numberOfGood = 0
func good() {
numberOfGood += 1
}

但是每次我单击按钮时,我都会得到线程 1:致命错误:意外发现 nil,同时隐式解开可选值作为错误......

问题是 userRating var 没有实例化为 UserRating 类,所以它的"好"函数为零。下面是一些要遵循的代码:

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)"
}
}

并在视图中设置用户评级

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"来引用类变量。

也许问题是你没有在某处初始化userRating变量?

请记得用大写字母写你的类名,像这样:var userRating: UserRating

发生这种情况是因为您根本不初始化 userRating 对象。只需将此行添加到您的 viewDidLoad(( 方法中即可。userRating = UserRating().希望对您有所帮助

最新更新