iOS NSUserDefaults Regarder le changement de valeurs pour une touche unique

J'ai le code suivant visant à attraper le cas de NSUserDefaults la modification de la valeur pour une clé spécifique.

 [[NSUserDefaults standardUserDefaults] addObserver:self
                                    forKeyPath:SOME_NSSTRING_VARIABLE
                                       options:NSKeyValueObservingOptionNew
                                       context:NULL];

 - (void)observeValueForKeyPath:(NSString *) keyPath ofObject:(id) object change:(NSDictionary *) change context:(void *) context
{NSLog (@"Changed for key %@", keyPath); }

Mais la observeValueForKeyPath n'est jamais appelé. J'ai même essayé de remplacer le SOME_NSSTRING_VARIABLE trop avec une chaîne comme mentionné dans En observant les changements de valeur d'un NSUserDefaults clé mais cela n'a pas aidé.

Mise à jour:
Je suis l'évolution du NSUserDefaults à partir d'un tabview. Le code ci-dessus afin de surveiller les changements se trouve dans un autre onglet de la même tabviewcontroller. Dans l'onglet où je surveiller les changements (de l'onglet où le code ci-dessus), si j'en ajoute un :

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//  NSLog(@"viewillappear");
NSUserDefaults *FUDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"The username obtained is: %@", [FUDefaults objectForKey:SOME_NSSTRING_VARIABLE]);
}

la mise à jour NSUserDefaults valeur est obtenue correctement, mais le observeValueForKeyPath n'a jamais été appelée.

Merci de poster le code lorsque vous modifiez la variable de trop
Aussi, je considérerai que vous avez [[NSUserDefaults standardUserDefaults] addObserver... à l'intérieur de viewDidLoad ?
NSUserDefaults *FDefaults = [NSUserDefaults standardUserDefaults]; [FDefaults setObject:nom d'utilisateur.texte forKey:SOME_NSSTRING_VARIABLE]; [[NSUserDefaults standardUserDefaults] synchroniser];
Oui, j'ai le addObserver... à l'intérieur de la fonction viewDidLoad

OriginalL'auteur Sankar | 2012-05-28