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. PAT乙级 1020. 月饼 (25)(只得到23分)

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

  2. 在 linux 中利用samba访问windows的共享

    只是介绍一些最基本的应用吧, 有些命令可能要求输入用户的密码 1. 首先要安装 samba 这个套件, 若只是访问windows中的共享的话, 可以只装 samba-client 就好了. 2. 在第 ...

  3. java 网络编程(一)---基础知识和概念了解

    java 为用户提供了十分完善的网络功能: 1. 获取网络上的各种资源(URL) 2. 与服务器建立连接和通信(ServerSocket和Socket) 3. 无连接传递本地数据(DatagramSo ...

  4. UINavigationController(转)

    UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件(如UIImagePickerViewController)以及很多有名的AP ...

  5. linux下xargs命令用法详解 【转】

    转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...

  6. 14 个 grep 命令的例子 【转】

    转自:https://linux.cn/article-5453-1.html 编译自:http://www.linuxtechi.com/linux-grep-command-with-14-dif ...

  7. 不错的linux下通用的java程序启动脚本(转载)

    转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...

  8. java.lang.Runtime类总结 【转】

    转自:http://blog.chinaunix.net/uid-128922-id-289994.html  Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类 ...

  9. Redis常用命令速查 02_转

    一.Key Key命令速查: 命令 说明 DEL 删除给定的一个或多个 key,不存在的 key 会被忽略,返回值:被删除 key 的数量 DUMP 序列化给定 key,返回被序列化的值,使用 RES ...

  10. JDBC的几种驱动

    不同的数据库的驱动是不同的 其中:Access驱动串---------sun.jdbc.odbc.JdbcOdbcDriver    MySQL驱动串---------com.mysql.jdbc.D ...