我有一个数组,我正尝试使用 NSUserDefualts
从多个类访问它。但是当我 NSLog
数组时,它一次只会保存一个。例如,我点击“A”,它会保存并打印“A”,但只要我点击“B”,它就会忘记“A”,只存储“B”。这是我的代码。如果您有任何想法,请告诉我。
头等舱
- (IBAction)pressedStarButton:(id)sender {
if (starBarButton.image == [UIImage imageNamed:@"bookmark_24.png"]) {
starBarButton.image = [UIImage imageNamed:@"bookmark_add_24.png"];
[favPDFArray removeObject:cell_title_from_previous];
NSMutableArray * tempArray = [favPDFArray mutableCopy];
NSLog(@"You removed Something");
for (NSString * articleTitle in favPDFArray){
if ([articleTitle isEqual:cell_title_from_previous])
[tempArray removeObject: articleTitle];
}
favPDFArray = tempArray;
for(NSArray *subArray in favPDFArray) {
NSLog(@"Array in myArray: %@",subArray);
}
}
else {
starBarButton.image = [UIImage imageNamed:@"bookmark_24.png"];
NSLog(@"You Added Something");
NSLog(@"%@",cell_title_from_previous);
favPDFArray = [[NSMutableArray alloc] init];
[favPDFArray addObject:cell_title_from_previous];
for(NSArray *subArray in favPDFArray) {
NSLog(@"Array in myArray: %@",subArray);
}
[[NSUserDefaults standardUserDefaults]setObject:favPDFArray forKey:@"favoritesArraySaved"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
二等舱
NSMutableArray *newFavoritesArray = [[NSUserDefaults standardUserDefaults]objectForKey:@"favoritesArraySaved"];
for (NSString * articleTitle in newFavoritesArray){
NSLog(articleTitle);
}
最佳答案
问题是当你这样做的时候:
favPDFArray = [[NSMutableArray alloc] init];
它正在创建一个新数组,这意味着之前存储的任何内容都不存在。当您随后将 NSUserDefaults“favoritesArraySaved”值设置为该数组时,它会用这个新分配的数组替换旧数组。
应该是这样的:
if (!favPDFArray) favPDFArray = [[NSMutableArray alloc]init];
这样,如果“favPDFArray”已经存在,它不会重建它。
关于ios - NSUserDefaults 只保存数组中的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277872/