Есть ли способ сделать "невидимые" пользовательские настройки по умолчанию? - PullRequest
0 голосов
/ 12 апреля 2011

Мой последний вопрос шел по этому пути раньше, но я думаю, что это оправдывает новый вопрос, потому что я хочу сейчас пойти по этому пути (вместо того, чтобы пытаться сделать то, что я пытался сделать в моем другом вопросе).

То, что я хочу сделать, это иметь «невидимые» значения в NSUserDefaults. Меня не волнуют рекомендации Apple, потому что мое приложение предназначено для взломанных телефонов. Это то, что я до сих пор:

root.plist в settings.bundle выглядит так (пока, потому что я хочу добавить поле пароля позже):

enter image description here

first_launch - это значение, которое я не хочу, чтобы пользователь изменял напрямую. Как видно из названия, его значение будет равно «ложно», как только пользователь запустит приложение один раз и пройдет через мой маленький мастер настройки.

Как вы можете видеть на листе, first_launch имеет значение TRUE / YES в качестве начального значения, но этот код:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"%d", [defaults boolForKey:@"first_launch"]);

ВСЕГДА показывает мне, что это 0. Что я могу сделать, чтобы в моем наборе настроек были «невидимые» значения? Я не хочу, чтобы пользователь изменял first_launch по понятным причинам, и я всегда хочу добавить поле пароля, которое будет доступно только из самого приложения.

1 Ответ

0 голосов
/ 12 апреля 2011

NSUserDefaults значения невидимы для приложения Настройки, если они не добавлены в Settings.bundle.

Вы можете хранить информацию в NSUserDefaults, используя этот код:

[[NSUserDefaults standardUserDefaults] setObject:someObject forKey:@"stringKey"];

Итак, в вашем делегате приложения попробуйте это:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"] != NO){

  // Do first run stuff here...
  // Then, set the firstRun flag to NO
  [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
}

РЕДАКТИРОВАТЬ:

Коммутаторы и сгруппированные данные и т.п. должны быть инициализированы в коде или заданы пользователем для их работы.

Edit2:

Вам необходимо вручную изменить значение клавиши @"firstLaunch".

if([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"] == NO){
  NSLog(@"The app has never been launched before.");
  // Notice the changed value here:
  [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];      
} else {
  NSLog(@"The app was launched before."); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...