framework español iphone objective-c ios cocoa-touch

iphone - framework - cocoa touch español



Guardando NSArray en NSUserDefaults y obteniéndolo en NSMutableArray (5)

¿Cómo puedo guardar NSArray en NSUserDefaults y luego cargarlo de nuevo en un NSMutableArray para llenar el UIPickerView ?

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

Cualquier ayuda apreciada ..

Gracias


Como muchos desarrolladores nuevos de iOS están viendo 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 guardar NSArray en NSUserDefaults y luego recuperarlo como NSMutableArray viceversa.

Puedes 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];


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


Para convertir de NSArray a NSMutableArray:

[array mutableCopy];

Para convertir de NSMutableArray a NSArray:

[NSArray arrayWithArray:array];

Editar: mutableCopy necesitará una versión posterior, ya que es una copy .


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

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

Para obtener 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"]];