zoukankan      html  css  js  c++  java
  • 文件数据持久化

    概论

    所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案:

    • plist文件(属性列表)

    • preference(偏好设置)

    • NSKeyedArchiver(归档)

    • SQLite 3

    • CoreData

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

    应用程序包   NSString *path = [[NSBundle mainBundle] bundlePath];

    在沙盒中有几个这样的文件夹:(这些文件都是位于Home路径下的)
    (1)Documents: 该文件夹用于程序数据文件写入到该目录下,iTunes同步该应用时会同步此文件夹中的内容,用于存储用户数据以及需要备份的数据。
    (2)Library:include Caches and Preferences .
           Preferences: iTunes同步,该应用时会同步此文件夹中的内容,用于放置用户的偏好数据,你不能直接创建偏好的设置文件,应该使用NSUserDefaults的类来获取和设置应用程序偏好
           Caches:iTunes不同步,用于存放应用程序专用的支持文件,保存应用程序再次启动过程需要的信息。
    (3)tmp:Tunes不同步,临时文件夹,下次启动就会将该文件夹中的东西删除。

    获取目录的方法:

    (1)获取Home目录的方法:
    NSString *homeDir = NSHomeDirectory();

    (2)获取Documents目录路径的方法:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];

    (3)获取Caches目录路径的方法:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachesDir = [paths objectAtIndex:0];

    (4)获取tmp目录路径的方法:
    NSString *tmpDir =  NSTemporaryDirectory();

    (5)获取应用程序程序包中资源文件路径的方法(获取apple.png);
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];

    数据持久化:http://www.cocoachina.com/ios/20150720/12610.html

  • 相关阅读:
    ymnets----框架内功能了解
    ymnets----代码生成
    关于分层架构
    SQL——抛出错误
    Jump Game
    combination sum && combination sum II
    35-Search Insert Position
    33-Search in Rotated Sorted Array
    34- Find First and Last Position of Element in Sorted Array
    机器学习实战之SVM
  • 原文地址:https://www.cnblogs.com/liyanlan/p/4648709.html
Copyright © 2011-2022 走看看