本文介绍了检测NSUserDefaults上的更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个带有最新SDK的iOS应用程序。

I'm developing an iOS application with latest SDK.

我想知道什么时候 NSUserDefaults 改变它的价值。

I want to know when a property on NSUserDefaults changes it value.

我找到了,但它特定于macOS:

I have found this, but it is specific for macOS:

[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
    forKeyPath:[@"values." stringByAppendingString: @"MyPreference"]
    options:NSKeyValueObservingOptionNew
    context:NULL];

如何在iOS上执行此操作?

推荐答案

使用以下代码片段试用 NSUserDefaultsDidChangeNotification

try out the NSUserDefaultsDidChangeNotification with this code snippet:

- (id)init {

  self = [super init];

  if(self) {
     [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(defaultsChanged:)
                                                  name:NSUserDefaultsDidChangeNotification
                                                object:nil];
  }
  return self;    
}

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

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

- (void)dealloc {
 [[NSNotificationCenter defaultCenter] removeObserver:self];
}

这篇关于检测NSUserDefaults上的更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 14:12