2

我创建了一个应用程序,我想为用户提示一条消息。也许使用 UIAlertview。之后,如果用户第二次运行应用程序,警报将不再提示。

那可能吗?老实说,我不知道如何做到这一点。任何的想法?我在STO上搜索,实际上这个链接,仍然很困惑。

什么是 NSUserDefaults?NSUserDefaults 如何存储这些信息?我的意思是这是我的第一次或第二次。

谢谢。

4

5 回答 5

7

要知道什么是 NSUserDefaults,我建议看一下官方文档

当然,您可以使用它来实现您的目标。您使用用户默认值来存储有关应用程序中当前运行量的信息。

或多或少像:

BOOL isRunMoreThanOnce = [[NSUserDefaults standardUserDefaults] boolForKey:@"isRunMoreThanOnce"];
if(!isRunMoreThanOnce){
    // Show the alert view
    // Then set the first run flag
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isRunMoreThanOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2012-11-01T09:27:14.197 回答
3

是的,你可以在你的应用程序中第一次在 NSUserDefault 中保存一个值,并在你打开应用程序后将其设置为其他值。

if(![[NSUserDefault standardUserDefault] objectforKey:@"AppOpenFirstTime"])
{
// App Open First time 
// Show Alert
[[NSUserDefault standardUserDefault] setObject:@"1" forKey:@"AppOpenFirstTime"]
}
于 2012-11-01T09:26:52.587 回答
2

您可以检查您是否在 NSUserDefaults 中存储了一些值

NSString *flag = [[NSUserDefaults standardUserDefaults] stringForKey:@"not_first_run"];
if (!flag) {
    //first run, do somethig
}

然后将其设置为某个值

[[NSUserDefaults standardUserDefaults] setObject:@"just any string" forKey:@"not_first_run"];

NSUserDefaults是在应用程序启动之间保存的键值对存储。

于 2012-11-01T09:29:49.847 回答
1

您可以完全按照 cortez 在您的链接中所说的那样做。NSUserDefaults 被写入磁盘,并且会从您的应用程序中创建和访问。

看到这个链接

于 2012-11-01T09:27:53.697 回答
1

您的应用程序在那时启动的第一次boolForKey:@"AlreadyRan"FALSE. 之后设置它TRUE

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"AlreadyRan"] ) 
 {
    [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"AlreadyRan"];       
 }

使用 NSUserDefaults 类,您可以保存与应用程序或用户数据相关的设置和属性。

The objects will be saved in what is known as the iOS “defaults system”. 
The iOS defaults system is available throughout all of the code in your app, and any data saved to the defaults system will persist through application sessions.This means that even if the user closes your application or reboots their phone, the saved data will still be available the next time they open the app!
于 2012-11-01T09:28:03.973 回答