Ios 如何检查用户词典中的密钥是否已更改?

Ios 如何检查用户词典中的密钥是否已更改?,ios,in-app-purchase,nsuserdefaults,Ios,In App Purchase,Nsuserdefaults,我想知道是否有一种方法可以跟踪用户字典默认值中密钥状态的变化 我不需要检查它是真是假,我只需要知道它是否改变了 以下是我的设想: 我有一个iAP产品,可以解锁某些功能,我希望这些功能在购买后立即可用,无需重新启动应用程序或注销 因此,我在具有这些特性的视图上实现了WillAspect方法,以通过一个键检查是否进行了购买 问题是,如果密钥为true(购买完成),它将执行多个任务,但我不需要每次用户购买iAP产品并使用应用程序时都执行这些任务 谢谢。您可以使用KVO(Key-Value Observ

我想知道是否有一种方法可以跟踪用户字典默认值中密钥状态的变化

我不需要检查它是真是假,我只需要知道它是否改变了

以下是我的设想: 我有一个iAP产品,可以解锁某些功能,我希望这些功能在购买后立即可用,无需重新启动应用程序或注销

因此,我在具有这些特性的视图上实现了WillAspect方法,以通过一个键检查是否进行了购买

问题是,如果密钥为true(购买完成),它将执行多个任务,但我不需要每次用户购买iAP产品并使用应用程序时都执行这些任务

谢谢。

您可以使用KVO(Key-Value Observer)进行此操作

如果要使用specic键检测更改,请使用:

[[NSUserDefaults standardUserDefaults] addObserver:self
                                        forKeyPath:@"YOUR_KEY_HERE"
                                           options:NSKeyValueObservingOptionNew
                                           context:NULL];
如果要在NSuserdefauls任何键更改时检测更改

使用
nsUserDefaultsIDChangeNotification
可以检测何时对键值进行任何更改

因此首先添加观察者:
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(defaultsChanged:)名称:NSUserDefaultsDidChangeNotification对象:nil]

然后使用以下方法进行检测:

- (void)defaultsChanged:(NSNotification *)notification {
  // Get the user defaults
  NSUserDefaults *defaults = (NSUserDefaults *)[notification object];

  NSLog(@"%@", [defaults objectForKey:@"YOUR_KEY"]);
}
希望它对您有所帮助。

您可以使用KVO(Key-Value Observer)进行此操作

如果要使用specic键检测更改,请使用:

[[NSUserDefaults standardUserDefaults] addObserver:self
                                        forKeyPath:@"YOUR_KEY_HERE"
                                           options:NSKeyValueObservingOptionNew
                                           context:NULL];
如果要在NSuserdefauls任何键更改时检测更改

使用
nsUserDefaultsIDChangeNotification
可以检测何时对键值进行任何更改

因此首先添加观察者:
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(defaultsChanged:)名称:NSUserDefaultsDidChangeNotification对象:nil]

然后使用以下方法进行检测:

- (void)defaultsChanged:(NSNotification *)notification {
  // Get the user defaults
  NSUserDefaults *defaults = (NSUserDefaults *)[notification object];

  NSLog(@"%@", [defaults objectForKey:@"YOUR_KEY"]);
}
希望它对您有所帮助。

您可以使用KVO(Key-Value Observer)进行此操作

如果要使用specic键检测更改,请使用:

[[NSUserDefaults standardUserDefaults] addObserver:self
                                        forKeyPath:@"YOUR_KEY_HERE"
                                           options:NSKeyValueObservingOptionNew
                                           context:NULL];
如果要在NSuserdefauls任何键更改时检测更改

使用
nsUserDefaultsIDChangeNotification
可以检测何时对键值进行任何更改

因此首先添加观察者:
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(defaultsChanged:)名称:NSUserDefaultsDidChangeNotification对象:nil]

然后使用以下方法进行检测:

- (void)defaultsChanged:(NSNotification *)notification {
  // Get the user defaults
  NSUserDefaults *defaults = (NSUserDefaults *)[notification object];

  NSLog(@"%@", [defaults objectForKey:@"YOUR_KEY"]);
}
希望它对您有所帮助。

您可以使用KVO(Key-Value Observer)进行此操作

如果要使用specic键检测更改,请使用:

[[NSUserDefaults standardUserDefaults] addObserver:self
                                        forKeyPath:@"YOUR_KEY_HERE"
                                           options:NSKeyValueObservingOptionNew
                                           context:NULL];
如果要在NSuserdefauls任何键更改时检测更改

使用
nsUserDefaultsIDChangeNotification
可以检测何时对键值进行任何更改

因此首先添加观察者:
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(defaultsChanged:)名称:NSUserDefaultsDidChangeNotification对象:nil]

然后使用以下方法进行检测:

- (void)defaultsChanged:(NSNotification *)notification {
  // Get the user defaults
  NSUserDefaults *defaults = (NSUserDefaults *)[notification object];

  NSLog(@"%@", [defaults objectForKey:@"YOUR_KEY"]);
}

希望它对您有所帮助。

这将在用户默认值发生任何更改时调用,而不仅仅是使用所需的键。这将在用户默认值发生任何更改时调用,而不仅仅是使用所需的键。这将在用户默认值发生任何更改时调用。这将在用户默认值发生任何更改时调用,不仅仅是使用所需的键。