保存NSArray到NSUserDefaults并获取它在NSMutableArray中

我如何保存在NSUserDefaults NSArray ,然后将其加载回NSMutableArray来填充UIPickerView

此外,问题是新值将被添加到该NSMutableArray ,然后该数组将被转换为NSArray被保存在NSUserDefaults (因为NSMutableArray无法保存在NSUserDefaults )。

任何帮助赞赏..

谢谢

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

可变数组可以被存储,因为它是NSArray的子​​类。

为了得到值作为一个NSMutableArray:

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

要么

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

从NSArray转换为NSMutableArray:

 [array mutableCopy]; 

从NSMutableArray转换为NSArray:

 [NSArray arrayWithArray:array]; 

编辑:mutableCopy稍后将需要发布,因为它是一个copy

NSUserDefaults恢复NSArray后,使用[[NSMutableArray alloc] initWithArray:]获取NSMutableArray实例。

由于这个问题正在被许多新的iOS开发人员所看到。 我想添加更多的帮助新手的。

 -(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); } } 

我希望这将帮助您将NSArray保存到NSUserDefaults ,然后将其作为NSMutableArray检索,反之亦然。

你可以像这样调用这个方法:

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