存储应用运行时间的值

时间:2014-05-30 06:28:39

标签: ios objective-c boolean constants nsuserdefaults

我需要存储一个仅在应用程序运行时间内保留的布尔值。当用户退出应用程序(也从后台)时,该变量应重置为默认值。我怎么能这样做?

我试过常数。我将常量保存在一个单独的.h文件中。在其中我宣布它是这样的。

const BOOL hasShownTutorial = NO;

在视图控制器中,

if (hasShownTutorial == NO) {
    [self showAppTutorial];
    hasShownTutorial = YES;
}

我在hasShownTutorial = YES;收到错误,说只读变量不可分配。

我也尝试使用NSUserDefaults进行此操作。但问题是,一旦你设置它,价值就会被存储好。当应用程序退出时,有没有办法清除它?

感谢您的意见和建议。

谢谢。

2 个答案:

答案 0 :(得分:1)

将其存储在特定密钥下的NSUserDefaults中。

[[NSUserDefaults standardDefaults] setBool:<myBool> forKey:@"myKey"];

然后稍后检索。

BOOL b = [[NSUserDefaults standardDefaults] boolForKey:@"myKey"];

如果要清除数据。

NSString *domain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domain];

例如,在AppDelegate的{​​{1}}实施中,只需清除数据。

-applicationWillTerminate:

编辑:如果第一种清除数据的方法不起作用,则可以使用类方法- (void)applicationWillTerminate:(UIApplication *)application { NSString *domain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domain]; } 。例如,以下内容将清除当前默认值。

+resetStandardUserDefaults

第三种可能性是专门删除属性。

[NSUserDefaults resetStandardUserDefaults];

答案 1 :(得分:0)

您无法更改const值,因为它是只读内存。请改用static关键字。