美文网首页
iOS-数据持久化

iOS-数据持久化

作者: 我是谁重要吗 | 来源:发表于2018-05-09 18:06 被阅读3次

    持久化:
    将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。

    持久化数据的方式:

    • 文件存储:
    1. NSUserDefaults

    2. 文件
      plist
      Write写入方式:[data writeToFile:FileName atomically:YES];

    3. 归档 (NSKeyedArchiver)

    • 数据库:
    1. 数据库(SQLite、CoreData、第三方类库FMDB)

    前3种都是覆盖存储。如果想要增加一条数据就必须把整个文件读出来,然后修改数据后再把整个内容覆盖写入文件。所以它们都不适合存储大量的内容。

    沙盒:
    iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”。
    沙盒就是一个文件夹,目录结构如下:

    • AppName.app "应用程序包"
    • Documents
    • Library
      Caches
      Preferences
    • tmp

    "应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。

      NSString *path = [[NSBundle mainBundle] bundlePath];
      NSLog(@"%@", path);
    

    Documents: 最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。

      NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
      NSLog(@"%@", path);
    

    Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。

      NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
      NSLog(@"%@", path);
    

    Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。

    tmp: iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。

      NSString *path = NSTemporaryDirectory();
      NSLog(@"%@", path);
    

    相关文章

      网友评论

          本文标题:iOS-数据持久化

          本文链接:https://www.haomeiwen.com/subject/dcgnrftx.html