zoukankan      html  css  js  c++  java
  • 李洪强iOS开发之数据存储

    李洪强iOS开发之数据存储

      iOS应用数据存储的常用方式

    1.lXML属性列表(plist)归档
    2.lPreference(偏好设置)
    3.lNSKeyedArchiver归档(NSCoding)
    4.lSQLite3
    5.lCore Data
     
    Documents:
    保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
     
    tmp:
    保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录
     
    Library/Caches:
    保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
     
    Library/Preference:
    保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录
     
      应用沙盒目录的常见获取方式
    利用NSSearchPathForDirectoriesInDomains函数

    NSArray *array =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO); NSUserDomainMask 代表从用户文件夹下找,YES 代表展开路径中的波浪字符“~”

    NSString *documents = [array objectAtIndex:0];  在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素

     

    偏好设置: 不能存储自定义对象,一般存储用户的账号密码信息

    1.存入数据

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:@"itcast" forKey:@"username"];

    [defaults setFloat:18.0f forKey:@"text_size"];

    [defaults setBool:YES forKey:@"auto_login"];

    2.读取数据

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *username = [defaults stringForKey:@"username"];

    float textSize = [defaults floatForKey:@"text_size"];

    BOOL autoLogin = [defaults boolForKey:@"auto_login"];

    [defaults synchornize]; 为了让程序立即写入调用这个方法

     

      NSKeyedArchiver: 需要遵守<NSCoding>协议

    实现以下的两个方法

    1. encodeWithCoder: 每次归档对象时,都会调用这个方法。一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量
    2. initWithCoder:  每次从文件中恢复(解码)对象时,都会调用这个方法。一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用decodeObject:forKey方法解码实例变量

    1.存入数据

    [NSKeyedArchiver archiveRootObject:array toFile:path];

    2.读取数据

    [NSKeyedUnarchiver unarchiveObjectWithFile:path];

  • 相关阅读:
    面向对象基础
    VmWare下安装CentOS6图文安装教程
    设计模式培训之一:为什么要用单例模式?
    CentOS5.4下安装和配置Apache、PHP、MySql、PHPMyAdmin
    WEB架构师成长系列索引
    WEB架构师成长之路之三架构师都要懂哪些知识
    设计模式培训之三:抽象工厂
    IOS6屏幕自动旋转设置测试
    设计模式培训之二:简单工厂、工厂方法
    QT和Oracle连接的oci驱动的编译
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/6938322.html
Copyright © 2011-2022 走看看