【问题标题】:Pass data that was previously inputted?传递之前输入的数据?
【发布时间】:2013-06-02 20:40:00
【问题描述】:

我有一个保存用户名和密码等数据的类。这些值是从带有文本字段的视图控制器中设置的。此类具有使用用户输入的用户名和密码来执行某些任务的方法。如何编写我的程序,以便用户只需输入一次用户名和密码即可使用其他类中的方法?这种方式通过使用 NSUserdefaults 起作用,但我希望每次启动新的应用程序会话时数据都会消失。我有什么办法可以做到这一点? 谢谢!

在您的 AppDelegate.m 文件中:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults removeObjectForKey:@"key1"];
    [defaults removeObjectForKey:@"key2"];
    [defaults removeObjectForKey:@"key3"];

    return YES;
}

【问题讨论】:

  • 您可以简单地用 nil 覆盖您的 ApplicationDidLaunch 方法中的 NSUserDefaults 中的值吗?这样你就可以获得会话级的持久性,但如果你需要的话,将来很容易改变它。希望我正确理解了您的问题。
  • 谢谢,这很有意义。你能给出一个如何覆盖它的快速代码示例吗?
  • 没关系,明白了。为未来的读者更新了我的答案。

标签: objective-c


【解决方案1】:

在您的应用委托中的 applicationWillTerminate 中,将您存储值的 NSUserDefault 设置为 nil。

[[NSUserDefaults standardUserDefaults]
 setObject:nil forKey:@"username"];

【讨论】:

  • 查看stackoverflow.com/q/13386505/1445366 上的讨论 - 此方法可能并不总是被调用。您可能希望缓存日期,并在用户离开您的应用一段时间后在启动时失效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 2020-04-01
  • 2018-12-30
  • 1970-01-01
  • 2018-12-22
相关资源
最近更新 更多