use*_*123 1 getter-setter ios swift userdefaults
在尝试将任何字符串分配给类级变量时,我总是变为nil.
以下是我的控制台输出:
// test = nil
// Demo.test = nil
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Demo.test = "app"
print("Demo.test = \(Demo.test)")
}
}
class Demo {
class var test: String? {
set {
UserDefaults.standard.set(test, forKey: "test")
print("test = \(test)")
}
get {
return UserDefaults.standard.string(forKey: "test")
}
}
}
Run Code Online (Sandbox Code Playgroud)
当你调用test内部二传手,将吸气剂被称为获得的价值test.此时,"test"的值nil在UserDefaults中.因此test,您应该使用newValue哪个是您要设置为变量的值,而不是存储.
class Demo {
class var test: String? {
set {
UserDefaults.standard.set(newValue, forKey: "test")
print("test = \(test)")
}
get {
return UserDefaults.standard.string(forKey: "test")
}
}
}
Run Code Online (Sandbox Code Playgroud)
从文档中,
如果计算属性的setter没有为要设置的新值定义名称,
newValue则使用默认名称.
检查" 属性"中的"ComputedProperties"部分,了解getter和setter的工作方式.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |