NSuserDeafaults和对象归档
来源:互联网 发布:内涵段子刷赞神评软件 编辑:程序博客网 时间:2024/06/03 20:47
NSUserDefaults类提供了一个默认的系统编程接口进行交互 一般用来保存应用程序相关的偏好设置 配置数据等 通过键值对来存储数据 一般用来存储单条数据
//通过单例来创建NSuserDefaults的对象 var userDefault = NSUserDefaults.standardUserDefaults() //也可以通过初始化方法 参数suitname标示该对象的组名称 var userDefault1 = NSUserDefaults(suiteName: "SwiftClass") //输出所有的键值对 print(userDefault.dictionaryRepresentation())
//判断nsuserDefaluts的appMessage 在dictionaryRepression中是否存在 //不存在就设置为this is app message if userDefault.objectForKey("appMessage") == nil { userDefault.setObject("this is my default message", forKey: "appMessage") //获取某个key的值 var dic = userDefault.dictionaryRepresentation() var object_one = (dic as NSDictionary).objectForKey("AppleKeyBoards") //或者 var object_two = dic["AppleKeyBoards"] //需要解包才能使用object对象 if let ovalue = object_one { print(ovalue) } }
//一些非常方便的方法来设置和获取常用的类型 userDefault.setInteger(123456, forKey: "Int") //读取 var intValue = userDefault.integerForKey("Int") print(intValue) //float类型的 userDefault.setFloat(3.2, forKey: "float") var floatValue = userDefault.floatForKey("float") print(floatValue) //double类型的 userDefault.setDouble(5.6, forKey: "Double") var doubleValue = userDefault.doubleForKey("Double") //bool类型的 userDefault.setBool(true, forKey: "Bool") var boolValue = userDefault.boolForKey("Bool") print(boolValue) //NSURL类型的 地址类型的 userDefault.setURL(NSURL(string: "http://www.baidu.com"), forKey: "url") var urlValue = userDefault.URLForKey("url")
系统对象实现存储,需要通过archivedDataWithRootObject方法转化成为NSDate作为载体 才可以存储
//转化成NSData流 var imageData = NSKeyedArchiver.archivedDataWithRootObject(UIImage(named: "swift.png")!) //存储为NSData对象 userDefault.setObject(imageData, forKey: "imageData")
获取对象的方法
//获取对象的方法 //获取NSData var objData = userDefault.objectForKey("imageData") //还原对象 var myImage = NSKeyedUnarchiver.unarchiveObjectWithData(objData as! NSData) //输出对象 print(myImage)
//删除操作 var ar:NSDictionary = userDefault.dictionaryRepresentation() for key in ar.allKeys { userDefault.removeObjectForKey(key as! String) //内存中的数据同步跟新到数据库中 userDefault.synchronize()文件的操作
获取HOME目录
//获取程序的home目录 let homeDirectory = NSHomeDirectory() print(homeDirectory)
Document目录是苹果建议将程序中建立的或在程序中浏览过的文件数据保存在该目录下 itunes备份和恢复的时候会包括此目录
获取document目录
let documentPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) let documentPaths = documentPath[0] as String //或者通过home目录自己添加文件夹 var documentPath2 = homeDirectory + "/Documents" print(documentPath2)
Library/prefenevces主要防治偏好设置的文件 通过nsuserdefault来进行设置
library/caches 主要放置一些缓存的文件 itunes不会备份此目录
//获取library目录 let libraryPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomainMask.AllDomainsMask, true) let library = libraryPath[0] as String //或通过home进行追加 let library2 = homeDirectory + "/Library" //获取cache目录 let catchpath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.AllDomainsMask, true) let catchPath1 = catchpath[0] as String //或通过home目录追加 let catchPath2 = homeDirectory + "/Library/Caches"
tmp目录,主要用来存放临时文件 保存应用程序再次启动过程中不需要的信息,重启后清空,获取tmp目录的代码如下
let tmpDir = NSTemporaryDirectory() //或通过home目录进行追加 var tmpDir2 = homeDirectory + "/tmp"
对于文件的操作 首先要设置一个文件管理器
//创建文件管理器 var fileManager = NSFileManager.defaultManager() //对于文件的操作有可能会有错误的生成 因此要定义一个错误 var error:NSError? //创建目录 自定义的 let myFile = homeDirectory + "/Documents/myFolder/Images" //创建目录 withIntermediateDirectories要设置为true 代表中间路径如果不存在的话 会创建这样的路径 do {var isSuccess = try fileManager.createDirectoryAtPath(myFile, withIntermediateDirectories: true, attributes: nil) } catch{ print("error") } }
写入文件
//创建文件 var filePath = myFile + "/appInfo.txt" var info = "caokaiqnag" do { try info.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding) } catch{ print("error") }
判断目录是否存在
通过文件管理器来处理
var exist = fileManager.fileExistsAtPath("filePath")
移动文件的路径
do {try fileManager.moveItemAtPath(filePath2, toPath: filePath) } catch{ print("error") }
文件的拷贝
var filePath4 = NSHomeDirectory() do {try fileManager.copyItemAtPath("filePath", toPath: filePath4) } catch{ print("error") }
获取所有的文件
var filePath5 = fileManager.subpathsAtPath(NSHomeDirectory())
还有很多其他的操作
0 0
- NSuserDeafaults和对象归档
- 复制对象、对象归档和单例
- 对象归档
- 对象归档
- 对象归档
- 对象归档
- 归档和反归档
- iOS 系统对象和自定义对象的归档Archiver
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- iOS 复杂对象持久化 归档和反归档的过程
- 仿造NSKeyedArchiver和NSKeyedUnrarchiver,对COCOS2DX数组对象归档
- Objective-C 对象进阶:归档的概念和用法
- Objective-C 对象进阶:归档的概念和用法
- 仿造NSKeyedArchiver和NSKeyedUnrarchiver,对COCOS2DX数组对象归档
- ISO——对象归档的基本概念和用法
- Objective-C 对象进阶:归档的概念和用法
- iOS 归档 和 自定义归档
- 归档自定义对象
- memcached开发注意事项
- 复制当前一行的快捷键
- android使用SharedPreferences保存值,值变化会提示
- NoSQL 数据库概览及其与 SQL 语法的比较
- 11月TIOBE编程语言排行榜,OC已经掉出前十
- NSuserDeafaults和对象归档
- 乐乐音乐2.0(本地版)源码+使用说明
- 前端的 jQuery 小技巧
- 高级换行
- 快速trycatch
- UIAlertController(弹框)控件
- 快速格式化代码
- Serverlet详解
- springMVC web.xml配置文件