NSUserDefaults,只在第一次加载时执行某些操作
我试图在首次启动应用程序时显示警告。如果稍后进入设置页面并希望再次看到此警报,我还想显示此警报。我想我可以在NSUserDefaults
中设置一个布尔值。我不太清楚如何做到这一点(假设这种方法是正确的)。我想在applicationDidFinishLaunching:options
,我可以得到钥匙@"FirstTimeLaunched"
的值,并在applicationWillTerminate
,我可以将该密钥的对象设置为NO
。如果是这种情况,我如何首次将BOOL
设为YES
?NSUserDefaults,只在第一次加载时执行某些操作
另外,我是否需要在didEnterBackground
模式下将其设置为NO
?谢谢。
只是想它倒退,而不是期待YES
,应用程序实际启动时设置一个变量,并在用户在设置中这样说时删除它。
在推出:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) {
// show your only-one-time view
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
而当用户想再次看到它,只是删除键:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"hasBeenLaunched"];
当访问不存在的关键,NSUserDefaults
将返回nil
。
首次启动应用程序,所以我认为您不需要将BOOL
设置为NO
。如果删除了应用程序,则会删除UserDefaults
。我们把它当应用程序第一次启动应用程序didFinishLaunchingWithOptions:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTimeLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
如果您在applicationWillTerminate
设置Bool
到NO
,那么用户每次从托盘杀死应用程序,你会显示在应用程序启动警报。这又取决于您的业务需求。
这是如何工作的?如果(myBool){//显示alert; }然后在applicationDidFinishLaunching中,它会第一次显示警报。下次启动应用程序后,它会不会再显示它,因为该值仍为YES? – Crystal
if(myBool)//不显示警报。假设您在第一次启动应用程序时将bool设置为YES。否则显示警报。 – 0x8badf00d
我会采取相反的方法,并首先启动检查一个名为appHasLaunchedPreviously的键。
如果是,则绕过警报。 如果不是YES,则显示警报,并立即将其设置为下次使用。
谢谢..我想在第一时间显示特定的控制器一次应用程序在设备上安装后,我怎么能实现这一点? ,任何帮助将不胜感激 –
@MacGeek与上述相同的方法。 – pablasso
请注意,不建议使用“synchronize”。 – danielhadar