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