我想知道是否有一种方法可以跟踪用户字典默认值中键状态的变化。
我不需要检查它是真还是假,我只需要知道它是否改变了。
这是我的场景: 我有一个解锁某些功能的 iAP 产品,我希望这些功能在购买后立即可用,而无需重新启动应用程序或注销。
所以我在具有这些功能的 View 上实现了 willAppear 方法,以通过 key 检查是否进行了购买。
问题在于,如果 key 为真(已购买完成),它将执行多项任务,但我不需要在每次用户购买 iAP 产品并使用该应用程序时执行此任务。
谢谢。
最佳答案
您可以为此使用 KVO(键值观察器)。
如果你想检测特定键的变化,使用:
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:@"YOUR_KEY_HERE"
options:NSKeyValueObservingOptionNew
context:NULL];
如果想在 NSuserdefauls 任何键更改时检测更改..
使用 NSUserDefaultsDidChangeNotification
,您可以检测键值何时发生任何更改。
所以首先添加观察者:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged:) name:NSUserDefaultsDidChangeNotification object:nil];
然后检测使用:
- (void)defaultsChanged:(NSNotification *)notification {
// Get the user defaults
NSUserDefaults *defaults = (NSUserDefaults *)[notification object];
NSLog(@"%@", [defaults objectForKey:@"YOUR_KEY"]);
}
希望对你有帮助。
关于ios - 如何检查用户字典中的键是否更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955458/