Guardar NSArray en NSUserDefaults y getlo en NSMutableArray

¿Cómo puedo save NSArray en NSUserDefaults y luego volver a cargarlo en un NSMutableArray para rellenar el UIPickerView ?

Además, el problema es que se agregarán nuevos valores a ese NSMutableArray y luego ese set se convertirá en NSArray para que se guarde en NSUserDefaults (ya que NSMutableArray no se puede save en NSUserDefaults ).

Cualquier ayuda apreciada …

Gracias

  [[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"]; 

Se puede almacenar una matriz mutable ya que es una subclass de NSArray.

Para get el valor como NSMutableArray:

 NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]]; 

o

 NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"] mutableCopy]; 
 // Store it [[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"]; [[NSUserDefaults standardUserDefaults] synchronize]; // Read it back NSMutableArray* myMutableArrayAgain = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]]; 

Para convertir de NSArray a NSMutableArray:

 [array mutableCopy]; 

Para convertir de NSMutableArray a NSArray:

 [NSArray arrayWithArray:array]; 

Edit: mutableCopy necesitará un lanzamiento más tarde, ya que es una copy .

Obtenga la instancia de NSMutableArray utilizando [[NSMutableArray alloc] initWithArray:] después de recuperar NSArray de NSUserDefaults .

Como muchos desarrolladores de iOS nuevos ven esta pregunta. Quiero agregar más para ayudar a los novatos.

 -(void)arraysFunction:(NSArray*)array mutArray:(NSMutableArray*)mArray{ if (array == nil || [array count] == 0) { [[NSUserDefaults standardUserDefaults] setObject:mArray forKey:@"mutableArray"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSLog(@"Mutable Array: %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"mutableArray"]); NSArray * simpleArray = [ NSArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"mutableArray"]]; NSLog(@"Simple Array: %@", simpleArray); } else{ [[NSUserDefaults standardUserDefaults] setObject:array forKey:@"array"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSLog(@"Simple Array: %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"array"]); NSMutableArray * mutableArray = [NSMutableArray arrayWithArray:[[[NSUserDefaults standardUserDefaults] objectForKey:@"array"] mutableCopy]]; NSLog(@"Mutable Array: %@", mutableArray); } } 

Espero que esto te ayude a save NSArray en NSUserDefaults y luego recuperarlo como NSMutableArray viceversa.

Puede llamar a este método como:

 NSArray * array = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", nil]; NSMutableArray * mutableArray = [[NSMutableArray alloc] initWithObjects:@"D", @"E", @"F", nil]; [self arraysFunction:array mutArray:nil]; [self arraysFunction:nil mutArray:mutableArray];