1. 使用方便性。实际上,一个成熟的工程中一定是对数据持久化进行了封装的,因此底层使用的到底是core data还是sqlite,不应该被业务逻辑开发者关心。因此,即使习惯写SQL查询的人,也应该避免在业务逻辑中直接编写SQL语句。

  2. 存储性能,在写入性能上,因为都是使用的sqlite格式作为磁盘存储格式,因此其性能是一样的,如果你觉得用core data写的慢,很可能是你用sqlite的时候写的每条数据的内容没有core data时多,或者是你批量写入的时候每写入一条就调用了一次save。

  3. 查询性能,core data因为要兼容多种后端格式,因此查询时,其可用的语句比直接使用sqlite少,因此有些fetch实际上不是在sqlite中执行的。但这样未必 会降低查询效率。因为iPhone的flash memory速度还是很快的。我的经验是大部分时候,在内存不是很紧张时,直接fetch一个entity的所有数据然后在内存中做filter往往比使 用predicate在fetch时过滤更快。如果你觉的查询慢,很可能是查询方式有问题,可以把core data的debug模式打开,看一下到底执行了多少SQL语句,相信其中大部分是可以通过改写core data的调用方式避免的。

  4. core data的一个比较大的痛点是多人合作开发的时候,管理coredata的模型需要很小心,尤其是合并的时候,他的data model是XML格式的,手动resolve比较烦心。

  5. core data还有其他sql所不具备的优点,比如对undo的支持,多个context实现sketchbook类似的功能。为ManagedObject优化的row cash等。

  6. 另外core data是支持多线程的,但需要thread confinement的方式实现,使用了多线程之后可以最大化的防止阻塞主线程。

1.如果你的项目规模比较大,用coreData 可以减少你对存储管理的很多工作,否则你可能需要自己写很多的数据模型倒数据库操作的代码。
2.你的数据结构变化,数据迁移的时候coreData能帮你自动的完成,用sqlite 你就需要自己写代码来完成。
3.coreData还有些其他效率方面的优化,比如延迟写入。

对我自己而言,一般来说,如果没有复杂的 查询
需求,而数据量又比较小的话,我会用文件来做存储,自我感觉比较干净。如果涉及到比较多的数据,但是结构比较单一,表比较少,逻辑比较简单用sqlite
也不错,但是如果你的表比较多,操作也比较多,还有升级迁移的需求,推荐使用coreData吧。

最新文章

  1. C#实现K-MEDOIDS聚类算法
  2. 【COGS 254】【POI 2001】交通网络图
  3. RBL开发笔记二
  4. 帮助你在 Photoshop 中轻松实现长阴影效果的工具
  5. JS中exec函数与match函数的区别与联系
  6. [反汇编练习] 160个CrackMe之025
  7. DB2之隔离级别和锁的论述
  8. 《WPF程序设计指南》读书笔记——第2章 基本画刷
  9. Black Box
  10. iphone6闪存检测
  11. dubbo框架揭秘之服务引用
  12. js监听事件
  13. 使用TensorFlow实现回归预测
  14. Linux硬盘文件分析取证(SSH过的IP)
  15. 自然底数e的意义是什么?
  16. input[type=file]的美化
  17. 关于JSON CSRF的一些思考
  18. [Python] 03 - Lists, Dictionaries, Tuples, Set
  19. C++STL priority_queue
  20. Linux入门教程:如何检查Linux系统的最后重启时间

热门文章

  1. URL的格式scheme
  2. 用一个例子学习CSS的伪类元素
  3. QString 与 QByteArray笔记
  4. [转]ORA-00907: 缺失右括号
  5. VHDL的testbench的编写(转)
  6. 怎么修改路由器地址的默认IP
  7. 教你50招提升ASP.NET性能(十九):静态集合
  8. 有关java中static关键的重写问题
  9. apicloud+融云实现即时通讯
  10. ios开发——实用技术篇OC篇&获取设备唯一标识