Ich erstellte AppGroups und eingerichtet NSUserDefaults
mit dieser Gruppe. Ich habe einen Beobachter, für den nicht ausgelöst wird, wenn der Wert geändert wird.Erkennen von Änderungen auf NSUserDefaults mit SuiteName
let defaults = NSUserDefaults(suiteName: "group.daniesy.text")!
defaults.addObserver(self, forKeyPath: "temp", options: NSKeyValueObservingOptions.New, context: nil)
defaults.setBool(!defaults.boolForKey("temp"), forKey: "temp")
defaults.synchronize()
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
println("changed")
}
Allerdings, wenn ich die appGroup ignorieren und verwenden NSUserDefaults.standardUserDefaults()
es wie erwartet funktioniert. Irgendeine Idee, warum es nicht funktioniert?
ja, komisch ... Beobachter für forKeyPath funktioniert nicht mit suiteName; Die einzige Lösung besteht darin, "global" alle NSUserDefault zu beobachten: NSNotificationCenter.defaultCenter(). addObserver (self, selector: "defaultsChanged_selector", Name: NSUserDefaultsDidChangeNotification, object: nil) – TonyMkenu
Würde dies funktionieren, wenn nsuser standardmäßig extern geändert wird? Wie von einem Widget oder einer anderen App? –
Es funktioniert, Sie können dieses Beispiel auch überprüfen - http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/ (PS Hello Cluj!: D) – TonyMkenu