2010-01-25 115 views
1

在我的应用程序中,我使用NSUserDefaults对象来存储用户名,密码和服务器URL在内置的设置应用程序。如果没有保存数据,则向用户呈现登录界面,并在成功登录后保存用户名和密码。然后在我的应用程序中,我有一个显示此信息的视图,但缺少文本,就好像数据尚未保存到设置中一样。下面的代码:iphone设置应用程序坚持数据

... 
NSUserDefaults* appSettings = [NSUserDefaults standardUserDefaults]; 
[appSettings setObject:username forKey:USERNAME]; 
[appSettings setObject:password forKey:PASSWORD]; 

if ([appSettings synchronize]) { 

    // display an alert with a positive message 
} else { 
    // display an alert with a negative message 

} 

因此,积极的信息在登录后显示出来,但是当我取数据再有什么都没有,除非我重新启动应用程序。

我需要立即保存数据,或者至少在另一个视图控制器需要读取设置之前需要做些什么?

回答

2

NSUserDefaults对象将其数据存储在内存中,并且是一个全局对象(无论如何都是您的应用程序)。因此,您存储在那里的任何内容应该立即可用于任何试图在之后访问它的内容。你不需要在这里调用同步。如果你没有收到你的数据,你应该检查你的电话的顺序,以确保他们被认为是他们的电话。

+0

啊哈!所以我在我的一个控制器中读取awakeFromNib方法中的设置数据。我只是在该方法中设置了一个断点,并且看到它立即被调用,我试图在用户单击包含该特定视图的选项卡时调用它。 awakeFromNib包含生成一些静态数据的外部代码,但我将它移动到viewDidLoad。 谢谢Ben! – Lex 2010-01-25 23:02:28