CoreData.framework : iOS中提供了对原始SQLite数据库API访问的封装,通过这个framework来管理数据缓存和持久数据要比使用SQL语句操作SQLite数据库简单和方便许多。

机制:通过framework来存储和查询数据只需要使用framework提供的类就可以,你可以完全使用对象的形式来管理你的数据以及数据之间的关系,framework已经很好地将数据库表和字段封装成了对象和属性,表之间的一对多、多对多关系则封装成了对象之间的包含关系.

通过 relationship 来表示:

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

多对一反向关系时:properties 项选中 Optional, Count 项选中Minimun 和 Maximun 并分别设置其值为1;

Core Data 特点:

1)Core Data的强大之处就在于这种关系可以在一个对象更新时,其关联的对象也会随着更新,相当于你更新一张表的时候,其关联的其他表也会随着更新。

2)Core Data的另外一个特点就是提供了更简单的性能管理机制,例如,使用NSFetchedResultsController类,你不用使用SQL的Limit而是使用NSFetchRequest类的setFetchBatchSize()就可以限制查询记录的总数,而NSFetchedResultsController类神奇的地方在于需要获取更多记录的时候,这个类会自动更新其缓存。

3)  对于多表查询上相对来说,CoreData 没有 SQL 直观,但 CoreData 的功能还是可以完成相关操作的。

但是对于类似外连接,左连接等操作,在CoreData中就显得无力。

CoreData 与 SQLite 比较的更多相关文章

  1. CoreData和SQLite多线程访问时的线程安全

    关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常 ...

  2. 关于CoreData和SQLite多线程访问时的线程安全问题

    数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两 ...

  3. CoreData和SQLite多线程访问时的线程安全问题

    数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两 ...

  4. 用过coreData或者sqlite吗?读写是分线程的吗?

    文/natewang(简书作者)原文链接:http://www.jianshu.com/p/cb8dc61b12fa著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 如果不是要求特别高, ...

  5. iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用

    CoreData的介绍和使用  源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...

  6. CoreData __ 基本原理

    操作过程 Context想要获取值,先要告诉连接器,我要什么东西 链接器再告诉store, 你给我什么东西, store去找 找到之后返回给链接器,链接器再返回给Context          Co ...

  7. iOS开发之表视图爱上CoreData

    在接触到CoreData时,感觉就是苹果封装的一个ORM.CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功 ...

  8. iOS-数据持久化-CoreData

    CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得 ...

  9. iOS 让CoreData更简单些

    原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...

随机推荐

  1. 我使用的vim配置文件

    各种搜,拼凑出了这么一个配置文件,以下是文件的内容 syntax onfiletype onset linespace=0set rulerset nocompatibleset confirmset ...

  2. 【RoR win32】新建rails项目找不到script/server的解决办法

    现象: D:\>rails new work/demo cd work/demo D:\work\demo>ruby script/server 这时显示出错: ruby: No such ...

  3. opencv常用数据结构之:IplImage

    typedef struct_IplImage{      int nSize; //IplImage大小      int ID; //版本(=0)      int nChannels; //大多 ...

  4. tcp socket

    1.TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在"无差别&quo ...

  5. XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化

    XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化 我们现在用的就是典型的XP+devOps模式,已经放弃scrum了 现在还很多公司弄docker虚拟化docker非常复杂,当然 ...

  6. zjtd 2016面试

    1.写一个函数get_next() class A{ public :int next();   //取下一个值,并且指针后移 bool has_next(); private: //可以认为是一个q ...

  7. Majority Element

    #include<map> using namespace std;class Solution {public:    int majorityElement(vector<int ...

  8. linux ll 命令各列的含义

    linux ll 命令各列的含义:

  9. linux下echo命令详解(转)

      linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,一般起到一个 ...

  10. source insight项目文件列表固定嵌入右侧

    项目文件列表悬浮出来,不是嵌入紧靠右边,先将该窗口最小化,然后往右拖放,就成功固定嵌入到右边了.