【问题标题】:iPhone 7 NSUserDefaults turning into niliPhone 7 NSUserDefaults 变成零
【发布时间】:2023-03-04 09:25:02
【问题描述】:

我有一部 iPhone 7,我也将它用于开发。我注意到在我的应用程序中,我将用于自动登录的会话令牌存储到 NSUserDefaults 中。但有时,如果不删除它,会话令牌为零,自动登录不起作用。这也发生在其他应用程序上,有时它会要求我再次登录,尽管我已经登录了。我猜想大多数应用程序使用的 NSUserDefaults 以某种方式被删除了。有人遇到类似问题吗?

class func setSessionToken(_ token: String){
        let defaults = UserDefaults.standard
        defaults.setValue(token, forKey: sessionTokenKey)
        defaults.synchronize()
    }

class func getSessionToken()->String?{
        let defaults = UserDefaults.standard
        return defaults.string(forKey: sessionTokenKey)
    }

【问题讨论】:

  • 您能否在defaults.setValue(token, forKey: sessionTokenKey) 行之前添加print() 语句并为我打印出token?此外,您应该COMMAND+SHIFT+F 并在搜索字段中粘贴“forKey: sessionTokenKey”,以确保您不会在项目中的其他任何地方删除该值。
  • 请注意,从 iOS 8 开始,不再需要调用UserDefaults.synchronize()。“因为此方法会定期自动调用,请仅在无法等待自动同步时使用此方法(例如,如果您的应用程序即将退出)..."

标签: ios iphone swift nsuserdefaults


【解决方案1】:

当运行 iOS8 或 9 模拟器,然后运行 ​​iOS10 模拟器并且 NSUserDefaults 在模拟器中停止工作时,通常会出现此问题。

但是,在您的情况下,如果它在 iPhone 中也不起作用。您可以使用最新版本的 Xcode8 进行尝试。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-12-05
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2013-02-09
相关资源
最近更新 更多