我需要存储一个仅在应用程序运行时间内保留的布尔值。当用户退出应用程序(也从后台)时,该变量应重置为默认值。我怎么能这样做?
我试过常数。我将常量保存在一个单独的.h文件中。在其中我宣布它是这样的。
const BOOL hasShownTutorial = NO;
在视图控制器中,
if (hasShownTutorial == NO) {
[self showAppTutorial];
hasShownTutorial = YES;
}
我在hasShownTutorial = YES;
收到错误,说只读变量不可分配。
我也尝试使用NSUserDefaults
进行此操作。但问题是,一旦你设置它,价值就会被存储好。当应用程序退出时,有没有办法清除它?
感谢您的意见和建议。
谢谢。
答案 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
关键字。