Обнаружение первоначального запуска приложения с использованием NSUserDefaults - PullRequest
1 голос
/ 11 августа 2011

В связи со следующим вопросом: iPhone: как определить, когда приложение запускается в первый раз?

Когда я посмотрел ссылку на NSUserDefaults для Apple, он сказал, что registerDefaults не сохраняет данные на диск. В приведенном выше вопросе приложение регистрирует значение от firstLaunch до YES при каждом запуске. Таким образом, каждый раз, когда приложение запускается, firstLaunch перезаписывается на YES, и поэтому приложение всегда будет думать, что это первый запуск приложения.

Прав ли я в этом?

EDIT:

После выполнения вышеприведенного урока это не всегда работает. Я продолжаю перезапуск из Xcode, и он продолжает печатать 1 значение bool, как при первом запуске.

Ответы [ 4 ]

5 голосов
/ 11 августа 2011

registerDefaults: не перезаписывает то, что уже установлено по умолчанию, но устанавливает значения по умолчанию для значений по умолчанию.Поэтому, если отсутствует значение по умолчанию, используется значение по умолчанию.Не так ли?

Если вы никогда не писали значение под ключом FirstLaunch, тогда boolForKey:@"FirstLaunch" будет использовать значение из registerDefaults:.Однако, если вы ранее делали setBool:NO forKey:@"FirstLaunch" и позже запрашивали его снова с boolForKey:, тогда значение из registerDefaults: не используется.

1 голос
/ 11 августа 2011

registerDefaults: не перезаписывает существующие значения, а только инициализирует значения, для которых еще не установлено значение.

0 голосов
/ 11 августа 2011

Попробуйте что-то подобное в

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"firstRun"] intValue]==0) {
       //do the stuff required at first launch


//after stuff done
    [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:1] forKey:@"firstRun"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    }

}

0 голосов
/ 11 августа 2011

НЕТ, сначала это будет ноль, затем вы устанавливаете его на «да», а перед тем, как установить его на «да», проверьте, установлено ли уже «да» или нет. Таким образом, userDefaults в первый раз вернет nil, если вы получите что-то для ключа. как

[[NSUserDefaults standardUserDefaults] valueForKey:@"FirstLaunch"]; 

вернет ноль при первом запуске приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...