zoukankan      html  css  js  c++  java
  • iOS数据存储的方式总结

    iOS沙盒目录下有四个文件夹。分别是:

    -Documents:应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
    -AppName.app:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
    -Library:这个目录下有两个子目录:Caches 和 Preferences
    Preferences:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
    Caches:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
    -tmp :这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
     
    对于数据的持久化存储,iOS中一般提供了4种不同的机制。
    1.NSUserDefaults
    2.对象归档
    3.数据库存储(SQLite)
    4.Core Data
     
    1.NSUserDefaults
    在iOS开发中,对于少量的用户设置或应用程序状态的数据,通常使用NSUserDefaults来保存。
    NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。
     
    2.对象归档
    使用两个类:NSKeyedArichiver、NSKeyedUnarchiver
    可以用 NSKeyedArchiver 类来实现数据模型缓存。
    为了把模型对象用 NSKeyedArchiver 归档, 模型类需要遵循 NSCoding 协议。

    NSCoding 协议方法
    -(void)encodeWithCoder:(NSCoder *)aCoder;
    -(id)initWithCoder:(NSCoder *)aDecoder; 
    当模型遵循 NSCoding 协议时,归档对象就很简单,只要调用下列方法中的一个:
     [NSKeyedArchiver archiveRootObject:objectForArchiving toFile:archiveFilePath]; 
     [NSKeyedArchiver archivedDataWithRootObject:objectForArchiving]; 
    第一个方法在 archiveFilePath 指定的路径下创建一个归档文件。
    第二个方法则返回一个 NSData 对象。NSData 通常更快,因为没有文件访问开销,但对象保存在应用的内存中,如果不定期检查的话会很快用完内存。
     
    NSKeyedUnarchiver 类用于从文件(或者 NSData 指针)反归档模型。
    根据反归档的位置,选择使用下面两个类方法。
     [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
     [NSKeyedUnarchiver unarchiveObjectWithFile:archiveFilePath]; 
    这 4 个方法在转化序列化数据时能派上用场。 
    使用任何 NSKeyedArchiver/NSKeyedUnarchiver 的前提是模型实现了 NSCoding 协议。
     
    3. 数据库存储(SQLite)
    和Android一样,iOS中也是用了SQLite这种嵌入式数据库。
    SQLite 是一个轻量级的关系数据库。在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。FMDB 是将SQLite API进行封装的库,是开源社区中的优秀者。
    FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码。
    使用fmdb可以参考github上的项目说明文档: https://github.com/ccgus/fmdb
     
    4.Core Data
    暂时还未使用过,待研究学习。
  • 相关阅读:
    NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框
    MQTT 折腾笔记协议简读
    深度剖析Byteart Retail案例:仓储(Repository)及其上下文(Repository Context)
    MySQL简介,安装,简单使用
    技术改进方案模板
    【零基础学习iOS开发】【01开篇】
    DDD:主键映射,你一直在使用的企业应用模式
    自己写框架 实践 (Event Framework)
    无刷新页面
    Parallel Desktop,Mac OS X虚拟Win7
  • 原文地址:https://www.cnblogs.com/samniu/p/4004157.html
Copyright © 2011-2022 走看看