如何将NSArray
保存在NSUserDefaults
中,然后将其加载回NSMutableArray
以填充UIPickerView
?将NSArray保存为NSUserDefaults并将其保存在NSMutableArray中
另外的问题是,新值将被添加到该NSMutableArray
然后该数组将被转换为NSArray
要保存在NSUserDefaults
(如NSMutableArray
不能在NSUserDefaults
被保存)。
知道的任何帮助..
感谢
如何将NSArray
保存在NSUserDefaults
中,然后将其加载回NSMutableArray
以填充UIPickerView
?将NSArray保存为NSUserDefaults并将其保存在NSMutableArray中
另外的问题是,新值将被添加到该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];
Thanx Vignesh,但如果某些字符串值发生了变化,如果数组中有一个值“一条路”,并且它现在更新为“现在道路仪式”,那么我们如何处理这个问题,以便相同的字符串也会在nsuserdefaults中更新,因为下一次在拾取器视图中会填充新更新的数组。有没有可能 – 2012-02-09 14:39:50
@illoGicalError。欢迎。您将不得不更新您的NSUserDefaults与修改后的数组。您可以使用第一行代码存储更新后的数组。 – Vignesh 2012-02-09 14:44:42
就是这样?没有archieving等,也可以数组包含复杂的对象?可以存储什么样的对象? – 2013-09-30 08:33:21
从NSUserDefaults
恢复NSArray
后获得使用[[NSMutableArray alloc] initWithArray:]
NSMutableArray
实例。
从NSArray中转换成的NSMutableArray:
[array mutableCopy];
从NSMutableArray中转换成的NSArray:
[NSArray arrayWithArray:array];
编辑:mutableCopy稍后需要发布,因为它是copy
。
也可以将mutable转换为non-mutable,你可以这样做: [mutableArray copy]; – quarac 2016-06-09 10:02:23
// Store it
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Read it back
NSMutableArray* myMutableArrayAgain = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]];
由于这个问题正在被许多新的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];
'NSMutableArray'可以存储,因为它继承NSArray'的'性能。 – Ilanchezhian 2012-02-09 14:18:04