iOS解档和归档 NSUserDefault

什么是归档和解档?

  1. 归档(也称对象的序列化) 就是通过某种格式把对象保存成本地文件,以便以后读回该对象的内容
  2. 解档(也称解归档/读档) 就是把归档的对象文件读成原来的对象的过程

如何归档和解档

1. 系统类的归档和解档

注:1. NSDictionary也可以直接进行归档和解档       2. 归档的对象包括这个对象中的属性,它们所属的类都必须要遵守NSCoding 协议才能归档和解档

2. 自定义类的归档和解档

如果自定义的类对象要进行归档,那么这个对象的属性所属的类也必须要遵守归档协议NSCoding
必须实现以下两个方法:

屏幕快照 2017-04-19 上午10.09.07.png

3. 归档成文件时,需要使用的类与方法

屏幕快照 2017-04-19 上午10.15.50.png

4. 归档后的文件读出为对象时,需要使用的类与方法

屏幕快照 2017-04-19 上午10.16.16.png

NSUserDefault

生成单例对象

屏幕快照 2017-04-19 上午10.30.59.png

1.存放类似plist文件中能存的信息:字典,数组,字符串,布尔数据,数字对象,NSData,NSDate
2.像操作字典一样进行存入和读出

NSUserDefaults单例以key-value的形式存储了一系列偏好设置,key是名称,value是相应的数据。存/取数据时可以使用方法objectForKey:和setObject:forKey:来把对象存储到相应的plist文件中,或者读取,既然是plist文件,那么对象的类型则必须是plist文件可以存储的类型,正如官方文档中提到的——

  • NSData
  • NSString
  • NSNumber
  • NSDate
  • NSArray
  • NSDictionary
    而如果需要存储plist文件不支持的类型,比如图片,可以先将其归档为NSData类型,再存入plist文件,需要注意的是,即使对象是NSArray或NSDictionary,他们存储的类型也应该是以上范围包括的。
屏幕快照 2017-04-19 上午10.37.18.png
屏幕快照 2017-04-19 上午10.37.29.png
屏幕快照 2017-04-19 上午10.37.48.png
屏幕快照 2017-04-19 上午10.39.39.png

[defaults synchronize];
其中,方法synchronise是为了强制存储,其实并非必要,因为这个方法会在系统中默认调用,但是你确认需要马上就存储,这样做是可行的。

你可能感兴趣的:(iOS解档和归档 NSUserDefault)