【问题标题】:how to store old value and new value in same Nsmutablearray in ios如何在ios的同一个Nsmutablearray中存储旧值和新值
【发布时间】: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 我不会得到旧数据
  • 任何新的数据类型来保存新旧值请告诉我

标签: ios iphone uitableview uitextfield nsarray


【解决方案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。在执行此操作时,您需要确保以下几点:

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

希望对你有所帮助。

【讨论】:

  • 如何在全局数组中添加previoud数据。
  • @DarjiJigar 类似于您从 NSUserDefaults 在 PlaceOrder 方法中的 qualifiersArray 中获取值
猜你喜欢
  • 1970-01-01
  • 2011-02-25
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多