自我是不可改变的

时间:2017-04-30 13:49:46

标签: macos swift2

我有一个类,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")
    }

}

0 个答案:

没有答案