码迷,mamicode.com
首页 > 移动开发 > 详细

IOS中CoreData浅析

时间:2016-10-03 23:32:53      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

CoreData简介:

  • 什么是CoreData?

    • Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句

    • CoreData 不能执行SQL语句 取而代之,操作的是对象。而常用的三方库 FMDB SQLite 可以直接SQL语句

  • CoreData和数据库有什么区别?

    • CoreData是一个苹果原生的框架,它拥有像数据库一样存储数据的功能,但本身并不是数据库

      • Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管 理数据。使用Core Data 框架,程序员可以很轻松有效地通过面向对象的接口管理数据,所以说CoreData不是数据库,不要以数据库的眼光看待.
    • Core Data 不是应用程序的数据库,也不是将数据持久化保存到数据库的API。Core Data 是一个 用于管理对象图的框架。Core Data 可以把对象图写入磁盘从而持久化保存

  • CoreData有什么特点?

    •   (1)CoreData提供了模型层的技术,可以直接对OC对象进行数据持久化

      • Core Data 是一个模型层的技术。帮助建立代表程序状态的模型层,Core Data 也是一种 持久化技术,能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core Data 不仅是 一个加载、保存数据的框架,它还能和内存中的数据很好的共事
    •   (2)在数据的存储操作过程中,CoreData无需编写任何SQL语句

    • (3)Core Data 使用包括实体和实体间关系,以及查找符合某些条件实体的请求等内容

    • (4)开发者可以在纯对象层上查找与管理这些数据,而不必担心存储和查找的实现细节

    • (5)Core Data 框架最早出现在Mac OS X 10.4 Tiger 与iOS 3.0 系统,经过成千上万的应 用程序以及数以百万用户的反复的验证,Core Data 确实已经是一套非常成熟的框架

    • (6)CoreData 利用了Objective-C 语言和运行时,巧妙地集成了Core Foundation 框架。是 一个易于使用的框架,不仅可以优雅地管理对象图,而且在内存管理方面表现异常优异

CoreData原理: 

  • 第一眼看到Core Data 令人生畏的复杂架构关系,很多人都会有无从下手的感觉

  • 可是,一旦理解了架构图中各个部件的组成及相互之间的关系,就能体会到Core Data API 的简 洁和直观了

  • Core Data stack(技术堆栈):如果能够理解Core Data stack 中的各个成员所扮演的角色,那么再 使用Core Data 就不会感觉到困难了

1.1-什么是CoreData Stack?

  • Core Data stack 是Core Data 的核心,由一组Core Data 核心对象组成

    • NSManagedObjectContext 对象管理上下文: 负责管理模型的对象的集合

    • NSManagedObjectModel 被管理的对象模型: 负责管理对象模型

    • NSPersistentStoreCoordinator 存储调度器: 负责将数据保存到磁盘的

1。2-CoreData Stack中的对象是如何协调工作的呢?

 

 

  • 组成可分为两部分

    • 对象图管理:主要是指对象管理上下文(NSManagedObjectContext)通过对对象模型(NSManagedObjectModel)实施对象管理.

    • 数据持久化:主要是指存储器(NSPersistentStore)来操作SQLite数据库,将数据存储在磁盘中(这部分是系统帮我们完成不需要我们管).

      • 在这两部分的中间,即堆栈中间,是持久化存储协调器(Persistent Store Coordinator, PSC)。通过它将对 象图管理部分和持久化部分绑在一起。当这两部分中的一部分需要和另一部分交互,将通过PSC 来 调节
  • 其中的注意点:
  • 一个工程可以有多个管理模型的Context,一个存储调度器可以调度多个存储器,不过在一般的开发中,我们只需要一个Contect和一个存储器就足够了

 

IOS中CoreData浅析

标签:

原文地址:http://www.cnblogs.com/OTgiraffe/p/5929778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!