In my AppDelegate,
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
let id = Bundle.main.bundleIdentifier!
if UserDefaults.standard.persistentDomain(forName: id) == nil {
UserDefaults.standard.setPersistentDomain(["test":true], forName: id)
}
}
in my ViewController,
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
}
override func viewWillDisappear() {
super.viewWillDisappear()
NotificationCenter.default.removeObserver(self, name: UserDefaults.didChangeNotification, object: nil)
}
override var representedObject: Any? {
didSet {
}
}
func userDefaultsDidChange() {
print("user defaults did change.")
}
}
`UserDefaults.didChangeNotification` fires each time the app running. Why this happened? Nothing is changed, in my opinion.