ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据存储

2022-03-28 11:32:23  阅读:177  来源: 互联网

标签:存储 保存 FMDB coreData 应用 数据 数据模型


应用沙盒

在想要本地存储数据之前,那就要知道一下什么是应用沙盒 ,其实很好理解应用沙盒就是应用的文件夹,与其他文件系统隔离。每一个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;
    如果数据库储存的类型和提供的数据类型不一致,必须重写此方法

标签:存储,保存,FMDB,coreData,应用,数据,数据模型
来源: https://www.cnblogs.com/laolitou-ping/p/16066256.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有