iOS: Impossibile impostare Uiapplication idletimerDisabled su sì in didfinishlaunchingwithoptions

StackOverflow https://stackoverflow.com/questions/7355458

Domanda

Ho un'app per iPad in cui l'utente può impostare IdletimerDisabile su sì o no tramite uno switch nelle preferenze. Quella parte funziona bene. Tuttavia, inizialmente impostarlo su YES nel metodo DidFinishLaunchingWithOptions del delegato dell'app se è la prima volta che l'app viene eseguita non funziona (comunque il dispositivo viene inserito automaticamente).

Ho provato l'hack di impostarlo prima, poi a sì, come descritto in altri thread senza alcun risultato. Anche tutti gli altri aspetti delle preferenze (StandardUserDefault) funzionano bene.

Ecco il codice pertinente:

- (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;
    }
}
È stato utile?

Soluzione

Utilizzare il registerDefaults metodo di NSUserDefaults Invece di testare se ObjectForkey è zero.

Guarda anche Dettagli su questo nella guida di programmazione pertinente. Una volta che hai registrato i valori predefiniti utilizzando RegisterDefaults (nel tuo caso il valore NO per il tuo "autoSleep" Chiave), ti viene assicurato di avere un valore in questa chiave, sia quello impostato nelle impostazioni dell'applicazione dall'utente ... o questo predefinito se l'utente non ha ancora impostato un valore per esso.

Quindi dovrebbe risolvere il tuo problema in quanto avrai sempre un valore per il tuo autoSleep Chiave, quello predefinito o quello fornito dall'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top