如何將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