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了。
分享到:
相关推荐
在iOS开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储并检索轻量级的用户偏好设置或应用状态数据。本教程针对初学者,将深入探讨`NSUserDefaults`的基本用法,包括如何设置、读取值以及如何持久化...
NSUserDefaults是iOS平台上的一种轻量级的数据持久化方法,主要用于存储用户偏好设置或者应用程序的状态数据。在Objective-C中,它是苹果提供的Foundation框架的一部分,为开发者提供了一种简单的方式来读写小型数据...
在iOS开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储和检索轻量级的用户偏好和应用设置。本实例将深入探讨如何在iPhone应用程序中使用`NSUserDefaults`,以及如何结合`Settings Bundle`来提供...
NSUserDefaults是iOS和macOS开发中的一个关键组件,用于存储应用程序的轻量级用户偏好和设置。这个"NSUserDefaults Demo iphone"示例旨在展示如何在iPhone应用中有效地使用这一功能。 NSUserDefaults通常用于保存...
`NSUserDefaults`类主要用于存储应用程序的默认设置或用户偏好数据,这些数据通常是键值对的形式。这些设置通常包括用户界面的偏好(如字体大小、颜色主题)、应用行为设置(如是否开启推送通知)等。`...
在iOS开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储用户偏好设置和轻量级数据。这个源码Demo主要展示了如何使用`NSUserDefaults`来读取和写入自定义对象,这对于理解和实践iOS应用的本地数据...
NSUserDefaults是iOS开发中一个非常重要的类,用于存储用户的基本偏好设置和轻量级的数据。它提供了简单的方法来读取和写入数据,这些数据在应用的生命周期内保持持久化,并在用户下次打开应用时仍然可用。这个教程...
《Beginning iPhone SDK Programming with Objective-C》是一本全面介绍如何使用Objective-C进行iPhone应用程序开发的书籍。它不仅覆盖了从入门到高级的所有知识点,还提供了大量的实践案例和代码示例,非常适合初学...
NSUserDefaults判断是否为第一次启动
《iPhone开发秘籍第二版》是一本针对iOS应用开发者的权威指南,涵盖了从基础到进阶的诸多关键知识点。此资源包含2至12章的源代码,为开发者提供了实战练习和深入理解iOS编程的宝贵材料。以下是这些章节中涉及的主要...
Cocos2D-iPhone是一个广泛使用的2D游戏开发框架,专为iOS平台设计。这个“知易Cocos2D-iPhone开发教程源代码”提供了一套详细的教程,旨在帮助移动开发新手快速入门游戏开发。通过学习这些源代码,开发者可以深入...
PAPreferences, 使用 @dynamic 访问 NSUserDefaults PAPreferences使用NSUserDefaults存储用户首选项的简便方法。PAPreferences将 dynamic 属性映射到 NSUserDefaults getter和 setter,以便访问默认值,就像它们是...
在本教程中,我们将深入探讨iPhone应用开发的基础知识,这些知识是基于人民邮电出版社出版的《iPhone开发基础教程》一书的源代码。这本书旨在为初学者提供一个全面的起点,让他们能够理解和掌握开发iOS应用程序所需...
- **定义与背景**:“Cocoa”是苹果公司推出的一套用于Mac OS X和iOS应用开发的框架集合,它提供了一系列丰富的API(应用程序编程接口),使得开发者能够轻松构建高质量的应用程序。 - **学习起点**:本文档作为入门...
在iOS应用开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储用户偏好设置或者轻量级的数据。这个压缩包"IOS应用源码——NSUserdefaults(读取和写入自定义对象).zip"包含了一个示例项目,展示了...
在iOS开发中,数据持久化是一项至关重要的技术,它使得应用程序在关闭或设备重启后仍能保留用户数据。其中,NSUserDefaults是苹果提供的一种轻量级的数据持久化方式,主要用于存储少量的基本数据类型,如字符串、...
《iPhone开发基础教程完整工程代码》是一份专为初学者准备的宝贵资源,它涵盖了iPhone应用开发的基础到进阶知识,旨在帮助学习者快速掌握iOS平台的编程技能。这个压缩包包含了一个名为"Begin_iOS_5_projects_2011_12...
几乎每个iOS项目中都会使用到NSUserDefaults,作为iOS开发常用的五种数据存储方式之一(NSUserDefaults、plist、NSKeyedArchiver、FMDB、CoreData),NSUserDefaults算是最易用的了。但是项目中用的多了之后key管理...
Cocos2D-iPhone是一款强大的2D游戏开发框架,它为iOS平台提供了丰富的功能和工具,使得开发者可以轻松创建各种游戏和互动应用。本教程旨在引导新手入门,并帮助经验丰富的开发者提升技能。以下是对Cocos2D-iPhone...