ios - NSUserDefaults 只保存数组中的一个元素

标签 ios objective-c arrays

我有一个数组,我正尝试使用 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/

相关文章:

ios - 管理推送通知

ios - 将生成的 SKTexture 保存到文件

objective-c - 如何在 cocoa/iOS 中进行 SHA 哈希

java - 为什么使用 boolean 数组需要这么长的时间?

ios - Swift NSString 函数语法用法

ios - 应用程序不在后台运行

Javascript 字符串到特殊数组

C 将 bmp 像素读入二维数组

ios - :(id)sender有什么区别?

ios - UINavigationBar 下的 UIViewController?