iOS: не могу установить uiApplication idletimerdisabled на да в didfinishlaunchingwithoptions
-
28-10-2019 - |
Вопрос
У меня есть приложение для iPad, где пользователь может установить IdletimerDisabled на да или нет через переключатель в настройках. Эта часть работает нормально. Тем не менее, изначально устанавливая его на «Да» в приложении DidFinishLaUnchingWithoptions Метод делегата, если это первый раз, когда приложение работает, не работает (в любом случае, устройство автоматически снабжает).
Я попробовал взломать его сначала, а затем, как описано в других темах, но безрезультатно. Все остальные аспекты предпочтений (StandardUserDefaults) также работают нормально.
Вот соответствующий код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// if app run for the first time, set these as defaults
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (![prefs objectForKey:@"autoSleep"]) {
// this conditional code runs, as traced using NSLog
[prefs setBool:YES forKey:@"autoSleep"];
application.idleTimerDisabled = NO;
application.idleTimerDisabled = YES;
}
}
Решение
Использовать registerDefaults
метод NSUserDefaults
Вместо того, чтобы тестировать, если ObjectForKey равна нулю.
Смотрите также подробности об этом в соответствующем руководстве по программированию. Анкет После того, как у вас есть значения регистрации по умолчанию с помощью RegisterDefaults (в вашем случае значение NO
для тебя "autoSleep"
Ключ), вы гарантируете, что у вас будет значение в этом ключе, либо тот, который установлен в настройках приложения пользователем ... или этот по умолчанию, если пользователь еще не установил для него значение.
Таким образом, это должно решить вашу проблему, так как у вас всегда будет значение для вашей autoSleep
Ключ, либо по умолчанию, либо предоставленный пользователем.