我尝试为项目添加评分系统:
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:致命错误:意外发现nil,同时隐式解开了一个可选值作为错误...
答案 0 :(得分:0)
也许问题是您没有在某个地方初始化userRating
var?
请记住,您的班级名称应使用大写字母,例如:var userRating: UserRating
。
答案 1 :(得分:0)
之所以会这样,是因为您根本没有初始化userRating对象。只需将此行添加到您的viewDidLoad()方法。 userRating = UserRating()
。希望对您有帮助
答案 2 :(得分:0)
问题是未将userRating var实例化为UserRating类,因此它的“良好”功能为nil。以下是一些代码:
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”来引用类var。