如何在我的应用加载之前从 NSUserDefaults 检索值...?

Posted

技术标签:

【中文标题】如何在我的应用加载之前从 NSUserDefaults 检索值...?【英文标题】:How to retrive the value from NSUserDefault before my app loads...? 【发布时间】:2012-08-20 02:00:40 【问题描述】:

我有一个 ViewController,点击一个按钮,标签就会更新。我想要的是,每次打开应用程序时,它都应该保留其旧值。我能够在 NSUserDefault 中写入每个值,但在加载应用程序之前不知道如何在标签上写入值。 示例: 在第一次运行中,标签的值为 5。 在第二次运行中,标签应该包含相同的值 5,如果我进行了任何更改,那么在第三次运行中应该存在更改。 谢谢...

【问题讨论】:

【参考方案1】:

在您的 AppDelegate 中,启动应用后调用的第一个方法是,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // Override point for customization after application launch.
    return YES;

对于其他情况,例如您的应用程序使用从非活动状态到活动状态,

- (void)applicationDidBecomeActive:(UIApplication *)application

    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

我推荐阅读,Apple's ios application lifecycle documentation。

【讨论】:

感谢回复...但是,我的标签是另一个视图的一部分...如何使用 NSUserDefault 在 AppDelegate 中对其进行初始化? 只需读取 AppDelegate 中的值,然后您就可以使用 [[UIApplication delegate] propertyName] 从任何给定控制器访问 AppDelegate;【参考方案2】:

以下是如何从 NSUserDefaults 检索存储值并在加载 ViewController 时为标签设置值:

- (void)viewDidLoad

    [super viewDidLoad];    
    self.myLabel.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"mySavedValue"];

我假设您的按钮已经连接到类似这样的操作,单击时会将值保存到标准用户默认值:

- (IBAction)buttonPressed:(id)sender

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:self.myLabel.text forKey:@"mySavedValue"];
    [defaults synchronize];

【讨论】:

thanx for reply...我实现了同样的...但发生的事情是这样的:我一个接一个地添加元素并且标签显示在那里添加,假设我输入了 3 个元素但是当我再次加载应用程序,它显示总和直到第 2 个元素...调试时 NSUserDefaults 具有第 3 个元素...请帮助... 好的,知道了...太糟糕了...我忘了同步它...现在它工作得很好...谢谢帮助...:)

以上是关于如何在我的应用加载之前从 NSUserDefaults 检索值...?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 为啥我的应用程序在重新启动之前不会将数据加载到 tableview 中?

如何在控制器之前加载.run

如何删除 Flash 的预加载器?

在我的初始屏幕加载 iphone 之前出现黑屏

Flex:如何在加载组件之前检索数据?

如何使用加载微调器为 Flutter Web 应用程序添加前缀?