五、写入任意类到制定文件(归档)
1、实现NSCoding协议
参考前一篇中的(四):(1)(2)。
2、存入
使用到的方法:
func stringByAppendingPathComponent(aString: String) -> String
参数:子目录;
返回:在调用该方法的字符串路径后面,添加子目录,一并返回成字符串。
NSKeyedArchiver.archiveRootObject(rootObject: AnyObject, toFile path: String) -> Bool
参数1:实现NSCoding协议的类;
参数2:存入文件的路径(带后缀);
返回:是否存入成功。
var person = Person(name: "Tom", age: 30, gender: true)
var path = NSHomeDirectory().stringByAppendingPathComponent("person.data")
NSKeyedArchiver.archiveRootObject(person, toFile: path)
3、读取
NSKeyedArchiver.unarchiveObjectWithFile(path: String) -> AnyObject?
参数:文件的路径(带后缀);
返回:文件里面,反归档的类。
var person = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as! Person
// 打印观察结果。
println(person)
六、第一次运行
方法原型:
defaults.registerDefaults(registrationDictionary: [NSObject : AnyObject])
参数:字典类型。官方说明:The contents of the registration domain are not written to disk; you need to call this method each time your application starts. (大意:数据不会保存到磁盘,需要在每次App运行时调用。)
// 自定义一个标示符,用字典类型。
var isFirstLaunchDic = ["firstLaunch": true]
// App运行时,都需要调用。
defaults.registerDefaults(isFirstLaunchDic)
// 先读取默认的.plist文件里边的值,再读取通过registerDefaults: 存入的值。
var isFirstLaunch = defaults.boolForKey("firstLaunch")
if (isFirstLaunch) {
println("第一次运行。\(isFirstLaunch)")
// App已经是第一次运行,在默认的.plist文件中存入false。
defaults.setBool(false, forKey: "firstLaunch")
}else {
println("并不是第一次运行!\(isFirstLaunch)")
}