如何在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
开发人员的新手。
我有UITableView
和UITextField
。我在文本字段中设置了一些不同的值,每个文本字段的值存储在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 的字符串转换数组 [重复]