ios - NSMutableArray 添加元素在 iPhone 中被覆盖

标签 ios objective-c nsmutablearray

每当用户选择一个国家/地区时,我都会尝试向 NSMutableArray 添加元素。但每次我使用 [myarray setobject:@""]; 时,它都会添加新值,覆盖我的旧值。我想要这个数组,因为我正在使用它:

[[NSUserDefaults standardUserDefaults]setObject:(NSMutableArray *)selectedCountriesByUser forKey:@"userSelection"];
[[NSUserDefaults standardUserDefaults]synchronize];

我想要一个数组来维护用户选择的国家/地区列表,即使在应用程序关闭后也是如此。

我该怎么办?

最佳答案

setObject 替换数组中的所有对象

例如,从NSUserDefault获取值:

NSMutableArray *myMutableArray = [NSMutableArray arrayWithArray:[[NSUserDefault standardUserDefault] objectForKey:"userSelection"]];

你应该使用 [myMutableArray addObject:"aCountry"]; 而不是覆盖,而只是添加

及之后

[[NSUserDefaults standardUserDefaults]setObject:myMutableArray forKey:@"userSelection"];
[[NSUserDefaults standardUserDefaults]synchronize];

编辑:

-(void) viewDidLoad {

   //your selectedCountriesByUser
   myMutableArray = [NSMutableArray arrayWithArray:[[NSUserDefault standardUserDefault] objectForKey:"userSelection"]];

 }

...

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {

     //add object to array
     [myMutableArray adObject:"yourObj"];

    [[NSUserDefaults standardUserDefaults]setObject:myMutableArray forKey:@"userSelection"];
    [[NSUserDefaults standardUserDefaults]synchronize];

 }

关于ios - NSMutableArray 添加元素在 iPhone 中被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460584/

相关文章:

arrays - 如何从数组中删除重复值

ios - 使用 UIVisualEffect,模糊 View 有时不会更新

objective-c - 将 NSDecimalNumber 与 Binet 公式结合使用斐波那契数列

cocos2d-iphone - nsmutablearray 在调用时不添加对象

iOS 在代码中创建 TableViewCell

ios - Xcode AMSlideMenu 在某些屏幕中禁用菜单

ios - 如何从 UITextField 加载文本并在每次文本字段返回文本时在 UITableView 中显示它

ios - 如何在不阻止 textView 触摸的情况下向所有 UITextView 添加一个 UIGestureRecognizer

ios - 使用 Core Data 时如何 NSPredicate 建立一对一关系?

ios - 使用 NEVPNManager 如何设置 SharedSecretReference