2011-01-23 25 views
6

He estado buscando una respuesta, pero realmente no he encontrado lo que estoy buscando.Cómo comprobar si NSUserDefaults existe

que tienen una aplicación y está utilizando para almacenar NSUserDefaults 'currentGameStatus' y me gustaría hacer las siguientes preguntas:

  1. ¿Cómo puedo comprobar si los NSUserDefaults .Plist existe? Necesito esto para determinar si necesito crearlo por primera vez y si es así, llenarlo con los valores predeterminados

  2. ¿Dónde lo encuentro en mi Mac (simulador en ejecución)? ¿Tendría que eliminarlo para probar si la primera ejecución funciona?

+1

En términos de su segunda pregunta, consulte la pregunta [respuesta] de [Forma fácil de ver NSUserDefaults guardados?] (Http://stackoverflow.com/questions/1676938/easy-way-to-see-saved-nsuserdefaults) existente . –

Respuesta

11

La manera de hacerlo es establecer un indicador que BOOL en NSUserDefaults si no existe ya:

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstRun"]) { 
    //do initialization stuff here... 

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstRun"]; 
} 
+0

¿Qué pasa si más adelante, configuro la primera ejecución como falsa? todavía entrará en la declaración if y regresará a SÍ – Kiddo

1
  1. NSUserDefaults ya existe de forma predeterminada. Se puede añadir a la misma por [[NSUserDefaults standardUserDefaults] setObject:@"object" forKey:@"key"];

  2. puede encontrar las NSUserDefaults .Plist aquí alt text

22

que no se verifica.

Registre sus valores predeterminados. y si no ha guardado un valor, se usará el predeterminado.

NSDictionary *defaultUserDefaults = [NSDictionary dictionaryWithObjectsAndKeys: 
            [NSNumber numberWithBool:NO], @"Foo", 
            @"Bar", @"Baz", 
            [NSNumber numberWithInteger:12], @"FooBar", 
            nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultUserDefaults]; 

y has hecho esta vez cada sus lanzamientos de aplicaciones.

+0

Wow, no puedo creer que me haya perdido eso. +1 a ti. –

+0

Esta debería ser la respuesta aceptada. – Vince