UserDefault
для пакета не является общим экземпляром, поэтому вы должны сохранить его, в противном случае он просто освобождается.
Здесь исправлен контроллер на стороне приложения. Протестировано с Xcode 11.4 / iOS 13.4
Примечание: KVO работает, только если установлено действительно новое значение, поэтому, если в вашем добавочном номере вы установите равное значение в UserDefaults, наблюдатель не будет уведомлен .
class ViewController: UIViewController {
// keep suite instance as member
let userDefaults = UserDefaults(suiteName: "group.com.test.apps")
override func viewDidLoad() {
super.viewDidLoad()
userDefaults!.addObserver(self, forKeyPath: "User", options: [.new], context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?,
change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
let user = userDefaults!.string(forKey: "User")
NSLog("User \(user)")
}
}