Почему не записывается мое значение NSUserDefault?

#iphone #ios #ipad #nsuserdefaults

#iPhone #iOS #iPad #nsuserdefaults

Вопрос:

Я пытаюсь использовать NSUserDefaults для отслеживания некоторых рекламных данных в моем приложении для iOS, но это работает не так, как я ожидал. Вот код…

  NSString *promoID = [[[self currentPromo] allKeys] objectAtIndex:0];

 if(![[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"promoid-%@", promoID]])
 {
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:[NSString stringWithFormat:@"promoid-%@", promoID]];
 .
 .
 .
  

Каждый раз, когда выполняется этот оператор if, выполняется код внутри. Разве код внутри этого оператора if не должен выполняться только один раз?

Большое спасибо за вашу мудрость!

Комментарии:

1. где вы написали этот код if? каким методом? как ты это называешь?

2. вы используете пакет настроек?

Ответ №1:

Зависит от того, как быстро вы повторите это снова.

Значения NSUserDefaults не синхронизируются мгновенно. Если вы хотите это сделать, вам нужно вызвать [[NSUserDefaults standardUserDefaults] synchronize]; после установки значения.

Комментарии:

1. спасибо, это исправлено! Я приму ваш ответ, как только пройдет десять минут. еще раз спасибо!

Ответ №2:

Используйте ключевое слово synchronize для извлечения ваших данных в NSUserDefaults

[[NSUserDefaults standardUserDefaults] синхронизация];

Это позволит извлечь и отобразить данные.

Комментарии:

1. Большое спасибо, я этого не делал и чуть не сошел с ума, много танков!