使用 userdefaults 保存用户选择但不覆盖 segue (swift 4)

use userdefults to save user choice but not override segue (swift4)

我需要下面的代码来保存 var color 中的任何内容。当应用程序启动时,颜色为黑色,如果用户是第一次 运行 该应用程序,它应该是棕色或红色。问题是一旦另一个视图控制器中的用户选择了一种颜色并将其转换为 class Jus 它应该保存所选的颜色。所以代码需要保存它是 segue 的任何颜色,所以当用户退出应用程序时,无论是什么 segue 到它,但不会干扰颜色 segue 的变化。

    class Jus: UIViewController {
    @IBOutlet weak var text: UILabel!
    var color = ""
    let userDefaults = UserDefaults.standard
    override func viewDidLoad() {

        super.viewDidLoad()
        if color == "a" {
            text.textColor = UIColor.brown

        }
        if color == "b" {
            text.textColor = UIColor.red

        }

    }
}

可以直接按这个用extension保存颜色thread

let defaults = UserDefaults.standard

//

extension UserDefaults {

    func colorForKey(key: String) -> UIColor? {
        var color: UIColor?
        if let colorData = data(forKey: key) {
        color = NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor
        }
        return color
    }

    func setColor(color: UIColor?, forKey key: String) {
        var colorData: NSData?
        if let color = color {
        colorData = NSKeyedArchiver.archivedData(withRootObject: color) as NSData?
        }
        set(colorData, forKey: key)
    }

}

//

保存

defaults.setColor(color: UIColor.red, forKey: "myColor") // set

阅读

if let myColor = defaults.colorForKey(key: "myColor")  {
      // set stored color
}
else {
       // set default color 
}