我知道这可能是一个非常简单的问题,但我花了很多时间试图弄清楚为什么不起作用,对我来说仍然没有意义,所以我需要帮助。
我正在学习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方法没有完成他的工作。
答案 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