Swift - 将newValue赋给对象

时间:2018-03-26 11:30:14

标签: ios swift

我知道这可能是一个非常简单的问题,但我花了很多时间试图弄清楚为什么不起作用,对我来说仍然没有意义,所以我需要帮助。

我正在学习iOS,我来自Android,我习惯使用对象。 我想做一些与Android一样的事情(也许这就是问题)。

我用方法get和set创建了一个对象。

private var _token: String!

var error: String {
    get {
        guard self._error != nil else { return "" }
        return _error
    }
    set {
        self._token = newValue
    }
}

当我想操纵这个物体时,是我遇到问题的时候。

let objectCreated = ObjectCreated()
guard let errorReceived = (xml["Whatever"]["Whatever"].element?.text) else { return }

print(errorReceived)
objectCreated.error = errorReceived
print(objectCreated.error)

第一个印刷品是打印正确的字符串,但第二个是打印""。所以set方法没有完成他的工作。

2 个答案:

答案 0 :(得分:2)

不应该是

...
guard self._token != nil else { return "" }
    return _token
...

使用nil-coalescing运算符

可以简化这一过程
var error: String {
    get {
        return self._token ?? ""
    }
    set {
        self._token = newValue
    }
}

注意:带有前导下划线的变量名称在Swift中是不常见的。

答案 1 :(得分:1)

private var _error: String!

var error: String {
    get {
        guard self._error != nil else { return "" }
        return _error
    }
    set {
        self._error = newValue
    }
}

self._token = newValue >>>> self._error = newValue