NSUserDefaults在设置之前返回

我做一个应用程序,需要两个string和一个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" ) 

我可以看到,从日志logging数组,他们被错误的顺序调用。

请任何人都可以看到即将出错的地方。 这是我的第一个目标-c / xcode后,所以不知道你想看到什么代码。 我会把所有的。

http://pastebin.com/BX5gqp17

对不起,如果这是很多的代码。

谢谢您的帮助。

编辑:更新代码

EDIT2:我觉得发生了什么事,就像这个iOS做准备之前的button动作一样

首先看看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"]); } 

现在检查结果

做这个:

 -(void)saveInfo:(NSArray *)myArray { [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"array"]; [[NSUserDefaults standardUserDefaults] synchronize]; //u forgot this NSLog (@"array saved = %@", myArray); }