【问题标题】:issue with NSUserDefaults (becomes null)NSUserDefaults 问题(变为空)
【发布时间】:2013-01-13 02:53:48
【问题描述】:

我们正在开发一个 iPhone 应用程序。该应用程序可在应用商店中获得。我们使用 NSUserDefaults 来存储我们的 usertoken 值。但是一些用户报告说,当应用程序长时间闲置(在后台)时,usertoken 变为空。但通常价值是越来越大。

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

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

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

【问题讨论】:

  • 为什么不同步?
  • 另外,您有 USER_TOEKN,这对我来说似乎是一个拼写错误。但我相信你一定已经照顾好了。指出来,以防万一。

标签: ios nsuserdefaults


【解决方案1】:

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

由于此方法会定期自动调用,因此仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或您想要更新用户默认设置时才使用此方法磁盘,即使您没有进行任何更改。

至于在哪里执行此操作,请查看您的 Application Delegate 中的 applicationWillResignActive:applicationDidEnterBackground:

【讨论】:

    【解决方案2】:

    试试这样的:

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

    它将永久存储您的价值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多