最近公司项目中使用了本地存储,所以趁着周六日来整理一下在Swift中的几种数据存储方式。
一、plist文件存储
存储目录:Documents
每次在Xcode中新建一个iOS项目后,都会自己产生一个.plist文件,里面记录项目的一些配置信息。我们也可以自己创建.plist文件来进行数据的存储和读取。
.plist文件其实就是一个XML格式的文件,支持的数据类型有NSDictionary、NSArray、Boolean、NSData、NSDate、NSNumber、NSString这些类型。
在这里简单说一下关于应用程序各个文档所在的目录:
Home目录 ./
获取方式:
let homePath = NSHomeDirectory()
打印出来以后,可以复制到Finder->前往 -> 前往文件夹中,查看文档。
home.png
正如我们看到的,在home下有三个文件夹,下面我们分别来看一下这三个目录。
1.Documents目录 ./Documents
用户文档目录,苹果建议将程序中建立的或者在程序中浏览到的文件数据保存到该目录下,iTunes备份和恢复的时候会包括此目录
获取方式:
//方法1
//swift 2
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingString("user")
//swift 3
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0].appending("user")
//方法2
let ducumentPath2 = NSHomeDirectory() + "/Documents"
2.Library目录 ./Library
这个目录下有两个子目录:Caches 和 Preferences
Library/Preferences目录,包含应用程序的偏好设置文件。iOS的Settings(设置)应用会在该目录中查找应用的设置信息。不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好。
Library/Caches目录,主要存放缓存文件,iTunes不会备份此目录,此目录下文件不会再应用退出时删除。一般存储体积大、不需要备份的非重要数据。
//Library目录-方法1
let libraryPaths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let libraryPath = libraryPaths[0] as! String
//Library目录-方法2
let libraryPath2 = NSHomeDirectory() + "/Library"
//Cache目录-方法1
let cachePaths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let cachePath = cachePaths[0] as! String
//Cache目录-方法2
let