8
我創建了appGroups,並且使用該組設置了NSUserDefaults
。我有一個觀察者,當值被改變時它不會被觸發。使用suiteName檢測NSUserDefaults上的更改
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")
}
但是,如果我忽略appGroup並使用NSUserDefaults.standardUserDefaults()
它按預期工作。 任何想法爲什麼它不工作?
yes,weird ... forKeyPath觀察員它不適用於suiteName;唯一的解決辦法是觀察員「全局」所有的NSUserDefault:NSNotificationCenter.defaultCenter()。addObserver(self,selector:「defaultsChanged_selector」,名稱:NSUserDefaultsDidChangeNotification,object:nil) – TonyMkenu 2014-10-28 10:10:10
當外部更改nsuser默認值時,這樣做會工作嗎?像從一個小部件或其他應用程序? – 2014-10-28 13:40:20
它的工作,你也可以檢查這個例子 - http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/(PS Hello Cluj!:D) – TonyMkenu 2014-10-28 14:30:37