我尝试为我的项目添加一个评级系统:
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()
.希望对您有所帮助