如何在ios的同一个Nsmutablearray中存储旧值和新值

Posted

技术标签:

【中文标题】如何在ios的同一个Nsmutablearray中存储旧值和新值【英文标题】:how to store old value and new value in same Nsmutablearray in ios 【发布时间】:2016-02-10 11:18:35 【问题描述】:

您好,我是 ios 开发人员的新手。

我有UITableViewUITextField。我在文本字段中设置了一些不同的值,每个文本字段的值存储在NSmutablearray 中,而不是在下一个屏幕中显示这个数组。显示的数组值是完美的。 但我的问题是当我切换回UITableView 屏幕并再次在UITextField 中设置新值并将这些UITextField 值存储在NSmutablearray 中时。但问题是新值被覆盖为旧值。但我希望这两个值都存储在NSArray

这是我的屏幕截图

summaryvc 显示完美的数据。但是当我返回屏幕并选择其他项目而不是单击 placeorder.but 问题是我们无法在摘要屏幕中获取旧的选定项目。

这是将数组存储在 Nsuserdefault 中的按钮操作代码。 global.filteredArray 是我的 nsmutablearray.dic 值是我的字典。

这是我的数组值


        counts = 1;
        "m_drycleaning_price" = 12;
        "m_id" = 3;
        "m_imagename" = d;
        "m_iron_price" = 16;
        "m_name" = "Coat(Man)";
        "m_wash_price" = 14;
        "m_washiron_price" = 13;
        total = 12;
    









AppDelegate *myAppDelegate = [[UIApplication sharedApplication] delegate];
                             [myAppDelegate.arrayCounts  addObject:dictValues];
myAppDelegate.arrayCounts[indexPath.row][@"counts"] = [NSString stringWithFormat:@"%d",(int)value];
    myAppDelegate.arrayCounts[indexPath.row][@"total"] = [NSString stringWithFormat:@"%d",(int)y];


    - (IBAction)placeorder:(id)sender
         
            NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

            [userDefaults setObject:global.filteredArray forKey:@"def_orderarraylist"];

            NSMutableArray *qualifiersArray = [NSMutableArray arrayWithArray:[userDefaults objectForKey:@"def_orderarraylist"]];

        NSLog(@"qualifier array=%@",qualifiersArray);

        [userDefaults synchronize];

         

请帮忙!

【问题讨论】:

你试过用nsuserdefaults存储吗? 正如 uma 所说,您必须将 nsarray 存储到 nsuserdefaults 中。那么只有你会得到所有的价值。当您回到第一个屏幕时,数组将被初始化。所以你没有得到旧数据。 @uma yaa 我会尝试 nsuserdefault 但不能解决问题。 @Signare yaa 我不会得到旧数据 任何新的数据类型来保存新旧值请告诉我 【参考方案1】:

你必须在类而不是你的方法上声明你的数组,你会没事的。

你可以这样做:

-(void)viewDidLoad
    array = [[NSMutableArray alloc] init];

使用NSUserDefaults,它将一直存在,直到应用被删除。

如果您有两个屏幕,如果您想从那里编辑您的数组,您可以简单地将数组引用传递给您的第二个屏幕。

FirstViewController:

设置您的阵列:

SecondViewController *svc= [[SecondViewController alloc] initWithNibName:@"secondviewcontroller" bundle:nil];
svc.firstViewArray=secondViewArray;

SecondViewController:

@property(nonatomic,retain)NSMutableArray *secondViewArray;

【讨论】:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:myAppDelegate.arrayCounts forKey:@"finalarray"]; [userDefaults 同步]; 好的,如果您使用的是 NSUserDefaults,那么您可以按照用户 Uma 的建议简单地取回您的数组,设置新值并将其存储回 NSUserDefaults【参考方案2】:

我可以看到您正在使用全局数组将数据存储到 NSUserDefaults。在执行此操作时,您需要确保以下几点:

    您需要做的第一件事是在将数据添加到全局数组时,首先从 NSUserDefaults 中获取以前的数据并将其添加到全局数组中。 您需要确保每次将新数据添加到全局数组时,您已将以前的数据从 NSUserDefaults 添加到全局数组 您还需要确保它的全局数组应该是 NSMutable 数组,并在初始化此数组时,然后在其中添加来自 NSUserDefaults 的先前值。

希望对你有所帮助。

【讨论】:

如何在全局数组中添加previoud数据。 @DarjiJigar 类似于您从 NSUserDefaults 在 PlaceOrder 方法中的 qualifiersArray 中获取值

以上是关于如何在ios的同一个Nsmutablearray中存储旧值和新值的主要内容,如果未能解决你的问题,请参考以下文章

如何以降序对ios中添加的UIImage添加NSMutableArray进行排序

NSMutableArray 到 Swift iOS 的字符串转换数组 [重复]

为啥我不能在 iOS 中 RemoveAllObjects 的 NSMutableArray?

如何在ios中分隔数组

在 iOS 中保存 NSMutableArray

从iOS中的两个不同的NSMutableArray中删除同一行