1

我正在制作一个需要两个字符串和一个 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在prepareSegue之前做按钮的动作

4

2 回答 2

3

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

现在检查结果

于 2012-09-26T13:16:52.197 回答
1

做这个:

-(void)saveInfo:(NSArray *)myArray
{
    [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"array"];
    [[NSUserDefaults standardUserDefaults] synchronize]; //u forgot this
    NSLog (@"array saved = %@", myArray);
}
于 2012-09-26T13:18:40.793 回答