Comment puis-je enregistrer NSArray
dans NSUserDefaults
puis le recharger dans un NSMutableArray
pour remplir le UIPickerView
?
Le problème est également que de nouvelles valeurs seraient ajoutées à ce NSMutableArray
puis ce tableau sera converti en NSArray
pour être enregistré dans NSUserDefaults
(comme NSMutableArray
ne peut pas être enregistré dans NSUserDefaults
).
Toute aide appréciée ..
Merci
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"];
Un tableau mutable peut être stocké car il s'agit d'une sous-classe de NSArray.
Pour obtenir la valeur en tant que NSMutableArray:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]];
ou
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"]];
Pour convertir de NSArray en NSMutableArray:
[array mutableCopy];
Pour convertir de NSMutableArray en NSArray:
[NSArray arrayWithArray:array];
Edit: mutableCopy aura besoin d'une version plus tard, car il s'agit d'un copy
.
Comme cette question est considérée par de nombreux nouveaux développeurs iOS. Je veux ajouter plus pour aider les débutants.
-(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);
}
}
J'espère que cela vous aidera à enregistrer NSArray
dans NSUserDefaults
puis à le récupérer sous la forme NSMutableArray
vice versa.
Vous pouvez appeler cette méthode comme:
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];
Obtenez une instance de NSMutableArray
à l'aide de [[NSMutableArray alloc] initWithArray:]
après avoir récupéré NSArray
à partir de NSUserDefaults
.