我正在制作一个需要两个字符串和一个int的应用程序。我希望将它们显示在另一个视图上。
我将它们放入一个数组中,我试图将它们存储在NSUserDefaults中。我设法保存了这些数据。我遇到的问题是,当我更改数据并再次保存时,获取数组的函数在设置它的函数之前被调用。因此,应用程序始终显示以前的数据。
我认为通过更改函数的调用时间很容易解决。
但是从代码看来,我认为它们的顺序正确。
2012-09-26 13:55:02.764 BeerDivider[4377:907] array returnd = (
2,
"Person 1",
"Person 2"
)
2012-09-26 13:55:02.773 BeerDivider[4377:907] array saved = (
5,
"Person 1",
"Person 2"
)
从记录数组中可以看到以错误的顺序调用了它们。
请任何人能看到即时通讯出现问题的地方。这是我的第一篇Objective-c / xcode文章,所以不确定您要查看什么代码。我将全部放入。
http://pastebin.com/BX5gqp17
抱歉,如果这是很多代码。
谢谢您的帮助。
编辑:更新代码
EDIT2:我认为发生的事情与此iOS do the button's action before prepareSegue类似
最佳答案
首先看一下NSUserDefault的Apple文档
NSUserDefault始终返回您保存在其中的数据
不要忘了写[defaults synchronize];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:yourArray forKey:@"YourKey"]
[defaults synchronize];
根据您给定的代码。
-(void)saveInfo:(NSArray *)myArray
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myArray forKey:@"array"];
[defaults synchronize];
NSLog (@"array saved = %@", [defaults objectForKey:@"array"]);
}
现在检查结果