NSUserDefaults不会删除密钥对象

Ram*_*ino 9 persistence login nsuserdefaults

当用户登录我的应用程序时,我从我的JSON服务器下载令牌并将其存储在NSUserDefaults中,如下所示:

[[NSUserDefaults standardUserDefaults] setValue:token forKey:TOKEN];
Run Code Online (Sandbox Code Playgroud)

当用户在后续页面中注销时,我调用此方法并返回登录屏幕:

[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:TOKEN];
Run Code Online (Sandbox Code Playgroud)

(之前我叫[[NSUserDefaults standardUserDefaults] removeObjectForKey:TOKEN];)

无论我如何尝试删除此用户默认值,每当我加载我的应用程序时,它总是显示完整的令牌而不是空字符串也不是空值.

在阅读时,显然它与读写周期有关?但即使我离开它一段时间,关键仍然存在.这是模拟器问题吗?

无论原因是什么,我该如何解决这个问题?

Ram*_*ino 21

这是首先缓存内存的模拟器问题.它只发生在xcode中,不应该在设备上发生.

  • 在您实际编写单元测试之前,这些测试无法在设备上运行.我们怎么想知道测试真的成功了? (7认同)
  • 由于这个错误,我差点疯了.我的测试一直在失败,我认为这可能是一个线程问题而且我已经质疑我的存在和我的技能.几乎变成了厕所清洁工的职业.我们能做什么?! (4认同)
  • 有没有人想出如何解决这个问题,以便我们可以正确地重置单元测试? (2认同)

Ern*_*ion 7

你打电话吗?

[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

密钥被删除后?也许您没有将更改持久化到数据库中.