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")
        }
    }
}
当你调用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")
        }
    }
}
从文档中,
如果计算属性的setter没有为要设置的新值定义名称,
newValue则使用默认名称.
检查" 属性"中的"ComputedProperties"部分,了解getter和setter的工作方式.
| 归档时间: | 
 | 
| 查看次数: | 81 次 | 
| 最近记录: |