Domanda

sto passando un valore intero all'oggetto NSUserDefault al negozio per l'uso quando i miei carichi app su. I aveva è perfettamente funzionante fino Ho cercato di cambiare tale valore integer ad un galleggiante. Essa ha causato un sacco di problemi, quindi ho ri-regolato il mio approccio, e il comando-z'd mio ritorno alla sicurezza di interi ... o almeno così pensavo.

E 'usato per essere che se ho salvato il valore, ho potuto chiudere il mio simulatore immediatamente, e la console sarebbe sputare il numero salvato correttamente senza problemi. Ora, dopo che il pasticcio stupido galleggiante (avrei potuto corrotto il mio oggetto NSUserDefault? Che suona solo stupido ...), ottenendo il giusto numero di display è un po 'un azzardo.

Ho attraversato con un gruppo di NSLogs, e può confermare che il valore di risparmio quando ho colpito Save è correttamente viene passato al metodo set nella classe UserDefault. Il metodo set ottiene il valore corretto, e quindi imposta all'oggetto NSUD questo modo:

[self setObject:[NSNumber numberWithInteger:num] forKey:savedNum];

Quando eseguo il metodo get su quell'oggetto, le stampe console il valore corretto. Quando i carichi app up, chiama il metodo get STESSO ho appena provato, ma non restituisce sempre la cosa giusta. Spesso, è il precedente salvataggio del valore che si presenta.

Se mi ha colpito il pulsante Salva e attendere 5 secondi prima di chiudere l'applicazione, ha funzionato correttamente prima, ma la sua rara. Se aspetto 10 secondi, sputa fuori il numero giusto.

Perché avrebbe tempo avere niente a che fare con questa operazione? Io sono solo ad una perdita completa sul motivo per cui questo sta accadendo, soprattutto perché avevo farlo funzionare correttamente solo ieri ...

Ogni pensiero o input sarebbe apprezzato !!

È stato utile?

Soluzione

Lo hai la certezza di -synchronize le NSUserDefaults?

Altri suggerimenti

Non ho mai notato che il comportamento -. E io non credo che sia il caso che ci sia un ritardo coinvolti

Quindi, la più ovvia domanda è:

Se fate una:

[[NSUserDefaults standardUserDefaults] setInteger:value ForKey:@"myInteger"];
NSLog(@"It is %d",[[NSUserDefaults standardUserDefaults] integerForKey:@"myInteger"]);

si ottiene il valore corretto?

Credo che questo sia un bug simulatore. Con l'applicazione sul dispositivo simulato, aprirsi Settings.app. Ora uscire Settings.app. Le impostazioni predefinite improvvisamente iniziare a lavorare.

Vedi anche questo thread sul forum di discussione di Apple circa la href="http://discussions.apple.com/message.jspa?messageID=6996592" rel="nofollow"> problema NSUserDefaults .

scroll top