[英]Saving NSArray to NSUserDefaults and getting it in NSMutableArray
How can I save NSArray
in NSUserDefaults
and then load it back in an NSMutableArray
to populate the UIPickerView
? 如何在
NSUserDefaults
保存NSArray
,然后将其加载回NSMutableArray
以填充UIPickerView
?
Also the issue is that new values would be added to that NSMutableArray
and then that array will be converted to NSArray
to be saved in NSUserDefaults
(as NSMutableArray
can't be saved in NSUserDefaults
). 此外,问题是新值将添加到该
NSMutableArray
,然后该数组将转换为NSArray
以保存在NSUserDefaults
(因为NSMutableArray
无法保存在NSUserDefaults
)。
Any help appreciated.. 任何帮助赞赏..
Thanks 谢谢
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"];
A mutable array can be stored since it is a subclass of NSArray. 可以存储可变数组,因为它是NSArray的子类。
To get the value as an NSMutableArray: 要获取NSMutableArray的值:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]];
or 要么
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"]];
To convert from NSArray to NSMutableArray: 要从NSArray转换为NSMutableArray:
[array mutableCopy];
To convert from NSMutableArray to NSArray: 要从NSMutableArray转换为NSArray:
[NSArray arrayWithArray:array];
Edit: mutableCopy will need a release later, since it is a copy
. 编辑:mutableCopy稍后需要发布,因为它是一个
copy
。
As this question is being viewed by many new iOS developers. 许多新的iOS开发人员正在查看此问题。 I want to add more to help newbie's.
我想添加更多来帮助新手。
-(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);
}
}
I hope this will help you to save NSArray
into NSUserDefaults
and then retrieving it as NSMutableArray
vice versa. 我希望这可以帮助您将
NSArray
保存到NSUserDefaults
,然后将其作为NSMutableArray
检索,反之亦然。
You can call this method like: 您可以将此方法称为:
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];
从NSUserDefaults
恢复NSArray
后,使用[[NSMutableArray alloc] initWithArray:]
获取NSMutableArray
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.