数据存储

应用沙盒

在想要本地存储数据之前,那就要知道一下什么是应用沙盒 ,其实很好理解应用沙盒就是应用的文件夹,与其他文件系统隔离。每一个iOS应用都有自己的应用沙盒,应用必须待在自己的沙盒里,其它应用不能访问该沙盒。

沙盒结构

 

 

 

  1. Documents :保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
  2. Library/Caches : 保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
  3. Library/Preference : 保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录
  4. tmp : 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录

数据存储方式

1.NSUserDefaults

NSUserDefaults单例,保存在偏好设置里,它可以用来存储用户的偏好设置,例如:用户名,字体的大小,用户的一些设置等。

2.plist文件

plist的根Type只能是字典(NSDictionary)或者是数组(NSArray)所以归档时我们只能将数组或字典保存到plist文件中,但是NSString也能通过归档保存到plist文件中同时它也可以通过stringWithContentsOfFile解档,它保存到plist中时Type是空的,Value是有值的!

 
3.NSKeyedArchiver归档(NSCoding)
只有遵守了NSCoding协议的类才可以用NSKeyedArchiver归档和NSKeyedUnarchiver解档,如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver归档和NSKeyedUnarchiver解档~
 
4.FMDB
iOS中使用C语言函数对原生SQLite数据库进行增删改查操作,复杂麻烦,于是,就出现了一系列将SQLite API封装的库,如FMDB
FMDB是针对libsqlite3框架进行封装的三方,它以OC的方式封装了SQLite的C语言的API,使用步骤与SQLite相似
FMDB的优点是:
(1) 使用时面向对象,避免了复杂的C语言代码
(2) 对比苹果自带的Core Data框架,更加轻量级和灵活
(3) 提供多线程安全处理数据库操作方法,保证多线程安全跟数据准确性
FMDB缺点:
(1) 因为是OC语言开发,只能在iOS平台上使用,所以实现跨平台操作时存在限制性
 
5.coreData
1.什么是coreData
  • iOS开发中实现数据持久化存储的⼀一种重要⼿段。
  • CoreData提供了对象-关系映射的功能,能将 Objective-c的对象使⽤数据库或者XML等⽅式 存储。
  • 如果使⽤用CoreData将数据存到数据库中,不⽤通过sql语句来操作数据
2.如何使用coreData
        1)NSManagedObjectModel,
            作用:用来加载 coreData数据模型⽂件,所有的数据模型可以 全部加载到此对象中。
        2)NSManagedObjectContext,
            作用:⽤于操作数据 模型(对象),并监测数据模型(对象)的变化。
        3)NSPersistentStoreCoordinator,
            作用:数据持久化存储协调器,负责调度上层与底层对数据的操作。        
        4)NSManagedObject,
            作用:具体的数据模型对象
        5)NSEntityDescription,
            作用:模型描述类,能够 实例化得到具体的数据模型对象
coreData的使用
    1.插入数据
        1)+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
    作用:实例化一个数据模型
    
        - (BOOL)save:(NSError **)error;
    作用:保存到本地

    2.查询数据

        1)NSFetchRequest,
            作用:数据查询请求类
        2)NSPredicate,
            作用:通过谓词设置查询条件的类
        3)NSSortDescriptor
            作用:按条件排序查询结果

    3.更新数据(建立在查询数据之上)
        
    4.删除数据(建立在查询数据之上)
        - (void)deleteObject:(NSManagedObject *)object;

coreData和KVC技术的结合
    
    - (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;
    如果数据库储存的类型和提供的数据类型不一致,必须重写此方法
posted @ 2022-03-28 11:23  朝阳向日葵  阅读(285)  评论(0编辑  收藏  举报