我想用settar和getter做下面的事情:
你能简单地写一下吗?
// Error code
class Person : NSObject {
let personId : String
init(personId: String) {
self.personId = personId
}
public var name : String? {
// The key is not static. It is decided dynamically.
let keyName = "name-" + self.personId
get {
// If `name` exists, return it.
if name != nil { return name }
// Else load from `UserDefaults`
return UserDefaults.standard.string(forKey: keyName)
}
set {
name = UserDefaults.standard.set(newValue, forKey: keyName)
}
}
}
答案 0 :(得分:3)
由于computed properties
实例中没有任何存储空间,因此无法实现仅使用变量的要求。因此,您必须引入一个私有变量来保存值class Person : NSObject {
public let personId : String
private var _name: String?
init(personId: String) {
self.personId = personId
}
public var name : String? {
get {
let keyName = "name-" + self.personId
return _name != nil ? _name : UserDefaults.standard.string(forKey: keyName)
}
set {
let keyName = "name-" + self.personId
UserDefaults.standard.set(newValue, forKey: keyName)
_name = newValue
}
}
}
:
reified