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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,764评论 2 7
  • 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,...
    Leeson1989阅读 2,000评论 4 1
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    1d5cb7cff98d阅读 1,796评论 0 0
  • //把数据存到硬盘 //iOS, 沙盒机制 //1.系统会为每个app, 分配一个文件夹(沙盒) //2.每个ap...
    少年不知代码贵阅读 322评论 1 1
  • 这是我个人的学习笔记 , 如有不同见解欢迎评论交流 .( 我的微博 : http://weibo.com/John...
    JohnnyB0Y阅读 2,097评论 2 5