• iOS-Senior4-数据处理之CoreData


    1.CoreData数据库框架的优势

      CoreData数据持久化框架是Cocoa API的一部分,首次在iOS5版本的系统中出现,它允许按照实体 - 属性 - 值 模型组织数据,并以XML,二进制文件或者SQLite数据文件的格式持久化数据。

      CoreData主要提供对象 - 关系映射(ORM)功能,把oc对象转化为数据保存到文件,也可以数据转化为oc对象。

    sqlite

    1.基于c接口,需要使用sql语句,代码繁琐

    2.在处理大量数据时,表关系更直观

    3.在oc中不是可视化的

     

    CoreData

    1.可视化,有undo/redo能力

    2.可以实现多种文件格式NSSQLiteStoreType,NSXMLStoreType

    3.苹果官方API支持,与iOS结合更紧密

    核心对象:

    实体管理类:NSManagedObject

    实体描述类:NSEntityDescription(菜单详情步骤)

    作用:用来描述实体类

    数据管理器类:NSManagedObjectContext(服务员小姐)

    作用:负责应用和数据库之间的交互

    数据连接器类:NSPersistentStoreCoordinator(厨师)

    作用:添加持久化存储库

    数据调节器类:NSPersistentStore(帮厨)

    数据模型器类:NSManagedObjectModel(菜单)

    作用:代表CoreData的模型文件

    2.CoreData数据库框架的核心对象

    持久化存储和存储文件:

    NSPersistentStore:持久化存储,是对实际文件的一种Object-C表示方式,一个被封装好的底层类,用于存储数据。

    存储文件:用来存储和管理数据的文件,iOS支持4种存储类型:NSSQiteStoreType,NSBinaryStoreType,NSInMemoryStoreType,NSXMLStoreType

    NSManagedObjectContext:被管理对象上下文CoreData中用于操作和使用数据,负责应用和数据库之间的交互。

    数据的保存需要NSMangedObjectContext进行save操作

    数据的查询需要NSManagedObjectContext进行executeFetchRequest操作(返回值是数组)

    CoreData提供的是对象关系映射,NSManagedObjectContext操作的都是NSManagedObject对象。

    NSManagedObjectModel被管理对象模型,管理多个对象

    NSManagedObject:被管理对象,CoreData返回的数据模型,被管理的对象是根据实体描述生成的。

    NSEntityDescription:实体描述类,根据实体创建被管理对象

    Entity:实体类,实体是对文件数据的描述。被管理对象表示实体,实体包含名称,属性(字段)和关系,实体的名称通常和被管理对象名一致

    NSFetchRequest:查询请求,可以做排序操作,也可以使用谓词

    NSManagedObjectContext根据NSFetchRequest查询数据,以数组形式返回,数组中包含被管理对象(NSManagedObject)

    NSSortDescriptor:排序操作

    3.CoreData数据库的简单操作

     部分代码:

    @interface ViewController ()

    //声明一个managedObjectContext对象

    @property(nonatomic,strong) NSManagedObjectContext *context;

    @end

     

    //初始化上下文,实现应用和数据库之间的数据交互

    self.context = [ [NSManagedObjectContext alloc ] init];

    //从应用程序当中加载模型文件

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource : @"Data" withExtension: @"momd"];

    //(代表的就是刚刚创建的实体)

    self.managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

    //创建连接器

    //连接器对象关联的实体模型

    ................(以上等步骤文件里是提供现成的)...............................................

    4.CoreData数据库表关联操作

     

    5.使用CoreData数据库的迁移

     CoreData支持随着App开发演进而带来的对象模型升级或修改的管理,模型的改变将导致不兼容(或不能打开)以前版本创建的存储。如果你要改变你的模型,你就必须要改变现有存储中的数据 - 即数据存格式(store format)----这被称为数据迁移(migration)

    数据迁移的三个阶段:

    1.创建基于源实例对象的目标实例对象;

    2.重新建立联系

    3.验证与保存

    版本升级:

    数据迁移过程中,CoreData创建了两个栈(stacks),一个用于源存储(source store),一个用于目标存储(destination store)。随后,CoreData从源栈中获取对象,对应的将其插入目标栈。

    注意:在新栈中,诸多对象是CoreData重新创建(re-create)

    总结:

    1.CoreData数据库框架的实现核心是持久化存储栈

    2.与CoreData数据库框架的所有交互都是通过NSManagedObjectContext完成的
    3.NSManagedObjectContext中的数据是缓存在内存中的副本,要想达到持久化目的必须更新保存

  • 相关阅读:
    [转帖]一名Delphi程序员的开发习惯(非技术问题)
    MsSQL通用数据库创建程序(源码+Demo+Exe)
    现有 Delphi 项目迁移到 Tiburon 中的注意事项[转]
    PHP的WEB服务编程工具NuSoap介绍[转]
    进程防杀Delphi版(DLL部分)
    PHP的WEB服务编程工具NuSoap介绍[转]
    现有 Delphi 项目迁移到 Tiburon 中的注意事项[转]
    用 PHP 读取和编写 XML DOM[转]
    进程防杀Delphi版(DLL部分)
    关系数据库设计
  • 原文地址:https://www.cnblogs.com/zhoulina/p/5467977.html
Copyright © 2020-2023  润新知