Pretty much what Marc and Chris said, though I prefer to change the value when the app quits in case there're multiple areas of the application that need to know about it. In code:
// -applicationDidFinishLaunching:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
// to check it:
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
// -applicationWillTerminate:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
原文链接:
http://www.lookyilook.info/blog/iphone%E5%BC%80%E5%8F%91%E4%B8%AD%E7%94%A8nsuserdefaults-%E5%88%A4%E6%96%AD%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%90%A6%E7%AC%AC%E4%B8%80%E6%AC%A1%E8%BF%90%E8%A1%8C
iphone开发中用NSUserDefaults判断程序是否第一次运行
在iphone开发中,相信很多朋友在使用NSUserDefaults时会遇到下面的问题。在Settings.bundle那里设置了默认值后,在用户第一次运行时,获取不了默认值。但是当用户进入设置后,再次运行程序,可以获取默认值了。例子如下:
- (BOOL) isFirstRun
{
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSString * userName = [defaults stringForKey:@"user_name"];
If([userName isEqualToString:@""])
{
NSLog("这是第一次运行");
return YES;
}
return NO;
}
很多开发者认为,在Setting.bundle中,设置一个item 为 @"user_name" 后,并且默认值不填,上面程序就会返回YES。然而 事实不是这样,上面返回的是NO。其实,上面的userName获取的值应为@"null",发现它不等于@"",更不是等于nil。本人在开发中使用的 代码段如下:
- (BOOL) isFirstRun
{
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
BOOL hasRunBefore = [defaults boolForKey:@"runIdentifier"];
If(!hasRunBefore )
{
NSLog("这是第一次运行");
[defaults setBool:YES forKey:@"runIdentifier"];
return YES;
}
return NO;
}
在程序第一次运行时,上面片段返回YES,并且做了一件事,将@"runIdentifier"的值设为YES,那么再一次运行程序时,上面片段就返回NO了。
分享到:
相关推荐
object-c基础语法NSUserDefaults, 适合初学者,主要学习NSUserDefaults的设置,NSUserDefaults读取值,读取所有用户偏好设置,怎样持久化设置用户设置等
自己写的一个NSUserDefaults 关于字符串,数值的快速存取。
iphone 应用程序设置和用户默认设置的一个实例,充分了解setting bundle的使用。
Swift 用户首选项 NSUserDefaults
NSUserDefaults判断是否为第一次启动
用NSUserDefaults存储数据做的一个登陆界面,当用户名和密码对的时候就移除登陆界面
PAPreferences, 使用 @dynamic 访问 NSUserDefaults PAPreferences使用NSUserDefaults存储用户首选项的简便方法。PAPreferences将 dynamic 属性映射到 NSUserDefaults getter和 setter,以便访问默认值,就像它们是...
这个用来保存游戏进度,开关值,简单的数据,还是很方便的, 比更快捷,3.0运行无误。Cocoa 上的例子,转到这里方便大家下载。
几乎每个iOS项目中都会使用到NSUserDefaults,作为iOS开发常用的五种数据存储方式之一(NSUserDefaults、plist、NSKeyedArchiver、FMDB、CoreData),NSUserDefaults算是最易用的了。但是项目中用的多了之后key管理...
使用系统的NSUserDefaults进行存取值实在是难以对其进行统一管理,为此NSUserDefaultsModel就很好的解决了这一难题,并且还支持Cocoapods。 github地址:https://github.com/liuchongfaye/NSUserDefaultsModel ...
自己封装的引导页,利用NSUserDefaults判断是否是第一次进入APP,代码简单易懂。可以根据自己的需求添加
前两年IOS应用源码-主要是用于毕业设计学习的。
IOS应用源码——NSUserdefaults(读取和写入自定义对象).zip
沙盒 和 数据持久化存储 Core Data 和 NSUserDefaults 案例
IOS中NSUserDefaults保存账号密码:将账号、密码保存到NSUserDefaults
JBS设置JBSSettings是一个简单的类,可以轻松地将应用程序设置存储到磁盘。 这些设置存储在 SQLite3 数据库(您选择的)中。 设置是@property上的一个子类字段JBSSettings对象。为什么不是 NSUserDefaults? 当您从...
TypedDefaults TypedDefaults是一个实用程序库,用于类型安全地使用NSUserDefaults。 动机尝试用Gwendolyn Weston进行的“保持冷静并消除类型”的话题! Swift 2016很棒,它启发了我应用TypedDefaults TypedDefaults...
在天气预报实例中, 熟练掌握 NSUserDefaults 的应用,
NSUserDefaults + SevenSecurityLayers.h(已过时,不再维护) 为NSUserDefaults提供加密层以安全保存数据的类别。 使用强大的AES 356位加密####效益:*仅用一行代码保护用户数据。*支持混淆二进制源中的密钥*...