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