我正在制作一个需要两个字符串和一个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"]);
    }

现在检查结果

10-06 13:09