iOS-数据持久化-NSUserDefaults
正文
数据持久化:把闪存上的数据以文件的形式保存下来(保存到磁盘)它的目的是为了保存数据
1、plist
2、NSUserDefaults
3、归档NSCoding序列化
4、sqlite(数据库)
5、coreData(苹果专有数据库)
路径:文件存储的位置
ios专有的沙盒机制:bandBox
IOS的应用程序里,每一个应用程序只能够读取写入本应用程序的沙盒目录
沙盒的路径->应用程序根目录
NSLog(@"%@",NSHomeDirectory());打印根目录
沙盒目录的组成
1、Documents:可以开放读取写入的权限->里面所有的文件都可以导出或者拖进去->不要放一些隐私的文件
怎样打开?
info.plist文件里面添加Application supports iTunes file sharing把这个key对应的值改成YES就可以分享Documents目录
2、Library:存放配置信息或者数据库资源文件
3、tmp:临时文件存储的地方隔一段时间会清除一次(可以设置)->不能放重要的文件(数据库)
bundle目录:应用程序右键显示包内容的目录不允许应用程序在运行的时候写入任何数据
目录
1、两个目录:
①、沙盒(有三个文件夹docments tmp library)
②、bundle在运行的时候只能读数据写不进去数据
2、读取路径方式
bundle目录:[NSBundle
mainBundle]
根目录:NSHomeDirectory()
tmp:NSTemporaryDirectory()
①、查找路径数组
NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)
②、找到指定路径
取第一个或最后一个元素
Documents:NSDocumentDirectory
library:NSLibraryDirectory
Caches:NSCachesDirectory
读写文件
[数组对象writeToFile:path atomically:YES]
[字典对象writeToFile:path atomically:YES]
[字符串对象writeToFile:path atomically:YESencoding:NSUTF8StringEncoding error:nil]
[NSArray arrayWithContentsOfFile:path]
[NSDictionary dictionaryWithContentsOfFile:path]
[NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]
写入读取文件
字典、数组都有读取写入文件的方法
1、写入到plist文件里面
2、数组、字典
数组读取文件
arrayWithContentsOfFile:(NSString
*)path
initWithContentsOfFile:(NSString
*)path
数组写入内容
-
(BOOL)writeToFile:文件路径atomically:(BOOL)useAuxiliaryFile
**atomically如果设置成YES不会直接写入到指定文件先写入到一个临时文件暂存一下当写入完毕才会存入到指定文件如果遇到(断电闪退来电话...)就会删除临时文件不去写入到指定文件防止写入数据不完整在使用的时候出现崩溃
如果设置成NO不管任何情况都会写入
字典读取文件
dictionaryWithContentsOfFile:(NSString
*)path
initWithContentsOfFile:(NSString
*)path
字典写入文件
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
字符串读取文件
initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc
error:(NSError **)error
stringWithContentsOfFile:(NSString
*)path encoding:(NSStringEncoding)enc error:(NSError **)error
NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
字符串写入文件
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFileencoding:(NSStringEncoding)enc error:(NSError **)error
NSError *error;
[contentwriteToFile:path atomically:YESencoding:NSUTF8StringEncoding error:&error];