在我的应用中,我使用NSUserDefaults对象在内置的“设置”应用中存储用户名,密码和服务器URL。如果没有保存数据,则会向用户显示登录界面,并在成功登录后保存用户名和密码。然后在我的应用程序中,我有一个显示此信息的视图,但文本丢失,好像数据尚未保存到设置。这是代码:
...
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
}
因此,在登录后会显示正面消息,但是当我再次获取数据时,除非我重新启动应用程序,否则没有任何内容。
我需要立即保存数据,或者至少在另一个视图控制器需要读取设置之前需要做什么?
答案 0 :(得分:2)
NSUserDefaults对象将其数据存储在内存中,并且是一个全局对象(无论如何都是对您的应用程序)。因此,您存储在那里的任何东西都应该立即可用于之后尝试访问它的任何东西。您无需在此处调用同步。如果您没有收到数据,则应检查通话顺序,以确保在您认为通话时被通话。