NSUserDefaults的问题(变为null)

时间:2013-01-29 13:50:52

标签: ios nsuserdefaults

我们正在开发一款iPhone应用程序。该应用程序可在应用商店中找到。我们使用NSUserDefaults来存储我们的usertoken值。但是有些用户报告说,当应用程序空闲(在后台)很长时间后,usertoken变为null。但通常价值就越来越高。

以下是在NSUserDefaults中存储usertoken的代码。我们从登录页面和注册页面将值设置为userToken。

[[NSUserDefaults standardUserDefaults] setObject:userToken forKey:USER_TOEKN];

将值设置为NSUserDefaults后,我没有调用synchronize。你能帮忙吗

2 个答案:

答案 0 :(得分:2)

如果你的应用程序要进行后台处理,你需要致电[[NSUserDefaults standardUserDefaults] synchronize]; - 我的猜测是在默认设置自动同步之前的应用程序闲置。来自documentation

  

因为此方法是定期自动调用的,所以只有在您不能等待自动同步时(例如,如果您的应用程序即将退出)或者您希望将用户默认值更新为打开时,才使用此方法即使您没有进行任何更改,也可以使用磁盘。

至于在何处执行此操作,请查看应用程序代表中的applicationWillResignActive:applicationDidEnterBackground:

答案 1 :(得分:0)

尝试这样的事情:

 NSUserDefaults  *udf = [NSUserDefaults standardUserDefaults];
 [udf setObject:userToken forKey:USER_TOEKN];
 [udf synchronize];

它将永久存储您的价值。