【原】iOS学习之SQLite和CoreData数据库的可比

1. SQLite数据库

  • sqlite数据库操作的主导流程是,
    创设数据库, 再通过定义一些字段来定义表格结构,
    可以利用sql语句向表格中插入记录, 删除记录, 修改记录,
    表格之间也可以建立联系。

  • 这一个操作都亟需选择SQL语句去完结,感觉操作很直接。如若原先有几许数据库和SQL基础的话,写起来会觉得很亲切,都是局地数据库操作的说话。可是当操作变多过后,语句越多,就很烦,代码比较多,看起来也会混杂一些。

  • 假使想要详细询问,可以看iOS学习36数据处理之SQLite数据库

2. CoreData数据库

  • CoreData.framework
    :iOS中提供了对原始SQLite数据库API访问的包裹,通过这几个framework来管理数据缓存和持久数据要比接纳SQL语句操作SQLite数据库简单和造福广大。

  • 建制:通过framework来储存和查询数据只需求利用framework提供的类就足以,你可以完全使用对象的款型来保管你的多寡以及数据里面的关系,framework已经很好地将数据库表和字段封装成了目的和属性,表之间的一对多、多对多涉及则封装成了目的之间的含有关系.

  • 通过 relationship 来表示:

  一对多时:设置为 properties 项选中
Optional, Plural 选项 To-Many Relationship 选中;

  多对一反向关系时:properties 项选中
Optional, Count 项选中Minimun 和 马克斯imun 并各自设置其值为1;

  要是想要详细通晓,可以看iOS学习37多少处理之CoreData

3. 比较

 1>
CoreData的类与SQLite数据库中的文字描述做一个遥相呼应:

  NSEntityDescription –> 表格结构
  NSManagedObjectModel –> 数据库中具有表格和他们的维系
  NSPersistentStoreCoordinator –>
数据库存放格局
  NSManagedObjectContext –> 数据库操作
  NSFetchRequest –> 查询语句
  NSManagedObject –> 表格的记录

 2>
上面大家可以详细的探访CoreData的类 

  • NSEntityDescription、NSManagedObjectModel

   NSEntityDescription
用来定义表格结构, 所以你就足以清楚 NSManagedObjectModel 中的
setEntities:(NSArray *)entities 函数大致有哪些用了 . 平时, 定义 model ,
是用文件 CoreData.xcda*****odel , 可以图形化的操作.
那就像是用nib来创制界面.

  • NSPersistentStoreCoordinator

   那些类的靶子平常用
NSManagedObjectModel 的靶子来开始化, 这几个类华而不实出差其他寄放形式,
最日常用的是 NSSQLiteStoreType.

  • NSManagedObjectContext

   那一个类的目的又用
NSPersistentStoreCoordinator 的目的来开首化, 它里面有些措施来添加, 删除
NSManagedObject

  • NSFetchRequest

   经常用 NSEntityDescription
来协会查询, 也就指定询问那多少个表格, 别的可以指定排序.

  •  NSFetchedResultsController

  NSFetchedResultsController
只是又封了瞬间, 和 NSFetchRequest 合起来使用, 方便取数据, 其它和
NSManagedObjectContext 关联, 当数据库发生变化的时候接到通告.

 3> 特点比较

  • CoreData的强劲之处就在于那种关涉可以在一个目的更新时,其关系的目标也会趁着更新,相当于您更新一张表的时候,其涉嫌的其余表也会趁机更新。

  • Core
    Data的其它一个表征就是提供了更不难的习性管理机制,例如,使用NSFetchedResultsController类,你绝不选取SQL的Limit而是使用NSFetchRequest类的setFetchBatchSize()就可以限制查询记录的总数,而NSFetchedResultsController类神奇的地点在于须要得到越来越多记录的时候,这几个类会自动更新其缓存。

  • 对此多表查询上相对来说,CoreData 没有
    SQL
    直观,但 CoreData 的效劳照旧得以成功有关操作的,但是对于接近外接连,左连接等操作,在CoreData中就显得无力。

 

网站地图xml地图