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

  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/6938322.html
Copyright © 2011-2022 走看看