NSUserDefaults除了保存和读取功能外,还为我们提供了一个很便捷的方法:registerDefaults。

func registerDefaults(registrationDictionary: [NSObject : AnyObject])

它的参数是一个字典类型。它的作用是为定义一组默认的数据,仅仅是定义一组默认的数据…这些默认的数据是不会被保存到plist文件中的,我们需要手动变更这些数据然后保存。

举一个栗子,我们可以使用这个方法来确认App是否是第一次启动:

let defa = NSUserDefaults()
//注册一个默认值
defa.registerDefaults(["firstRun":true])
//从plist文件中读取内容,因为第一次启动还没有生成plist文件,所以读取上面注册的默认值
let isFirstRun = defa.boolForKey("firstRun")
//是第一次启动
if(isFirstRun){ println("这是第一次启动")
//手动把firstRun改为false,保存到plist中
defa.setBool(false, forKey: "firstRun")
}
else{
println("不是第一次启动")
}

registerDefaults方法中的字典数据是不会被保存到plist文件中的,当我们读取某个键值时,如果plist中没有找到,那么会从registerDefaults方法的字典参数中寻找对应的键值,拿到默认值。当我们做了相应处理后,再手动把这个键值内容保存到plist中,下次读取是就会直接读plist文件中的键值了,而不会读取registerDefaults参数中的字典内容了。

NSUserDefaults registerDefaults的更多相关文章

  1. NSUserDefaults:熟悉与陌生(转)

    转载自:http://swiftcafe.io/2016/04/04/nsuserdefaults/?hmsr=toutiao.io&utm_medium=toutiao.io&utm ...

  2. ios数据永久存储之----NSUserDefaults

    我们在开发app时不可避免的会在本地存储一些数据,NSUserDefaults就是系统提供的一个用来数据存储的类,本片文章就来介绍一些NSserdefazults的用法. 详细内容:https://m ...

  3. NSUserDefaults standardUserDefaults的使用

    本地存储数据简单的说有三种方式:数据库.NSUserDefaults和文件. NSUserDefaults用于存储数据量小的数据,例如用户配置.并不是所有的东西都能往里放的,只支持:NSString, ...

  4. NSUserDefaults API简单的介绍和使用英文文件

    Overview The NSUserDefaults class provides a programmatic interface for interacting with the default ...

  5. NSUserDefaults的使用,保存登录状态和设置的轻量本地化存储

    NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; if([[NSUs ...

  6. iPhone开发之使用NSUserDefaults存储数据

    NSUserDefaults是什么,有什么用处 对于应用来说,每个用户都有自己的独特偏好设置,而好的应用会让用户根据喜好选择合适的使用方式,把这些偏好记录在应用包的plist文件中,通过NSUserD ...

  7. swift,NSUserDefaults的swift化封装

    NSUserDefaultshtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror- ...

  8. iOS开发值NSUserDefaults类概述

    NSUserDefaults类概述 NSUserDefaults类为和默认的系统进行交互提供了一个系统编程接口.默认的系统允许一个应用来定制它的行为以适应用户的喜好.例如,你可以允许用户去决定你的应用 ...

  9. iOS Programming NSUserDefaults

    iOS Programming NSUserDefaults  When you start an app for the first time, it uses its factory settin ...

随机推荐

  1. Spring框架(6)---AspectJ实现AOP

    AspectJ实现AOP 上一篇文章Spring框架(4)---AOP讲解铺垫,讲了一些基础AOP理解性的东西,那么这篇文章真正开始讲解AOP 通过AspectJ实现AOP要比普通的实现Aop要方便的 ...

  2. [HDU1282]回文数猜想

    Problem Description 一 个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒 序数相加, ...

  3. [HDU1210] Eddy's 洗牌问题

    Problem Description Eddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1,2,3..n,n+1,..2n.这也是 ...

  4. React组件开发经典案例--todolist

    点开查看代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <me ...

  5. 1572: [Usaco2009 Open]工作安排Job

    1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 814  Solved: 365[Submit ...

  6. 算法模板——LCA(最近公共祖先)

    实现的功能如下——在一个N个点的无环图中,共有N-1条边,M个访问中每次询问两个点的距离 原理——既然N个点,N-1条边,则说明这是一棵树,而且联通.所以以1为根节点DFS建树,然后通过求两点的LCA ...

  7. Java容器源码解析之——ArrayList

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

  8. 【子非鱼】冒泡排序过程呈现之java内置GUI表示

    自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...

  9. Android getAttributeIntValue()详解-霞辉

    经常使用getAttributeIntValue()方法,但是大多使用的形式是attrs.getAttributeFloatValue(null, "xxx", 0);只是在中间传 ...

  10. Linux shell-grep

    grep --help备忘录 Usage: grep [OPTION]... PATTERN [FILE]...Search for PATTERN in each FILE or standard ...