我有一个类,Task,带有'count'属性。最终目标是将计数增加1。
在操场上,这是有效的:
class Task: NSObject {
var name: String
var count: Int
init(name:String, count:Int) {
self.name = name
self.count = count
}
}
var test = Task(name: "test", count: 0)
test.count += 1
// => 1
但在我的实际项目中,它收到了这个错误:
变异运算符的左侧不可变:'self'是不可变的
在我的ViewController中,我有一个@IBAction函数,我想触发计数增加,这就是错误发生的地方。这是一个精简版:
@IBAction func addTask(sender: AnyObject) {
currentTask = newTaskInput.stringValue
let x = Task(name: currentTask, count: 0)
currentTaskObj = x
// error occurs here
currentTaskObj!.count += 1
}
知道怎么解决这个问题吗?我一定错过了一些东西,因为它正在游乐场中完全按我喜欢的方式工作。非常感谢提前!
编辑:这是我项目中的实际课程(我将会话更改为上述示例的计数):
class Task: NSObject, NSCoding {
var name: String
var sessions: Int
var time: String = ""
init(name:String, sessions:Int, time:String? = "") {
self.name = name
self.sessions = sessions
self.time = time!
}
required convenience init(coder aDecoder: NSCoder) {
var name = aDecoder.decodeObjectForKey("name") as! String
var sessions = aDecoder.decodeObjectForKey("sessions") as! Int
var time = aDecoder.decodeObjectForKey("time") as! String
self.init(name: name, sessions: sessions, time: time)
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.name, forKey: "name")
aCoder.encodeObject(self.sessions, forKey: "sessions")
aCoder.encodeObject(self.time, forKey: "time")
}
}