2011-09-27 17 views
8

Quiero guardar una matriz con NSUserDefault, entonces, poner en applicationDidEnterBackgroundIOS: almacenar una matriz con NSUserDefault

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 

y en application didFinishLaunchingWithOption

myArray= [[NSMutableArray alloc] 
      initWithArray:[[NSUserDefaults standardUserDefaults] 
      objectForKey:@"myArray"]]; 

que es aceptable para el dispositivo multitarea, pero para dispositivo no multitarea, ¿cómo puedo resolverlo?

Respuesta

10

tienda del objeto en NSUserDefaults en -applicationWillTerminate:, si ya no se ha guardado por la invocación de -applicationDidEnterBackground: (es decir, comprobar si es compatible con múltiples tareas, si lo es, entonces no guardarlo, porque ya se ha guardado).

- (void) applicationWillTerminate:(UIApplication *) app { 
    if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && 
     ![[UIDevice currentDevice] isMultitaskingSupported]) { 
     [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 
    } 
} 
+0

Como se indicó en otra respuesta, debe sincronizar los valores predeterminados después de configurar el objeto. [[NSUserDefaults standardUserDefaults] synchronize]; – user3246173

0

Guardar NSUserDefaults en

- (void)applicationWillTerminate:(UIApplication *)application 
0

establece

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 

en

applicationWillTerminate 
3

Las respuestas anteriores son los correctos, pero tenga en cuenta que ni applicationDidEnterBackground ni applicationWillTerminate están garantizados para ser llamado en todas las situaciones. Por lo general, es mejor que almacene datos importantes cada vez que haya cambiado.

7

No se olvide de sincronizar el buffer antes de entrar en el fondo:

[[NSUserDefaults standardUserDefaults] synchronize]; 
0

y no se olvide de utilizar el encodeWithCoder y initWithCoder dentro del objeto que está tratando de ahorrar y que está contenido en la matriz

Cuestiones relacionadas