zoukankan      html  css  js  c++  java
  • iOS数据库操作之coredata详细操作步骤

    iOS数据库操作之coredata详细操作步骤


     
     
    iOS应用数据存取的常用方式 
    • XML属性列表 -- PList
    • NSKeyedArchiver 归档 •Preference(偏好设置) • SQLite3
     Core Data

    Core Data简介 
     Core Data iOS SDK 里的一个很强大的框架,允许程序员以面向对象 的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效 地通过面向对象的接口管理数据 
     Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转 化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的 数据还原成OC对象 
     在数据操作过程中,无需编写任何SQL语句 
    • 要使用Core Data,需要导入CoreData框架 



    模型文件及实体(Entity)
    • 要使用CodeData,首先需要定义模型文件,描述应用程
    序中的所有实体(Entities)• 所谓实体,是跟数据库进行映射的对象 


    NSManagedObject--对应数据库中的一条记录 


    Core Data主要对象关系示意图 类似于数据库的句柄,handle,用来操纵数据库
                    持久化存储调度者,是数据库与对象之间的

     
    在开发中,只会用到一次,如果不理解,直接粘代码




    Core Data主要对象
     NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
     NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据 库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管 理不同对象上下文
     NSManagedObjectModel:被管理的对象模型 NSEntityDescription:实体描述 

    打开数据库 
    // 1. 实例化持久化的存储 
    // 1.1 Bundle中加载被管理的数据模型 
    NSManagedObjectModel *model = [NSManagedObjectModelmergedModelFromBundles:nil];
    // 1.2 实例化持久化存储调度 
    NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
    ...
    // 1.3 添加持久化存储(SQLite)
    [store addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:url options:nil
    error:&error];
    ...
    // 管理对象上下文 _context = [[NSManagedObjectContext alloc]init]; _context.persistentStoreCoordinator = store;



    新增记录 
    Person *p = [NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:_context];
    p.name = @"张三"; p.age = @18;
    [_context save:nil]; 

    查询数据--NSFetchedResultsControllerNSManagedObjectContext *context = [[DataManagersharedDataManager] sharedContext];
    NSFetchRequest *request = [NSFetchRequestfetchRequestWithEntityName:@"Person"];
    // 定义查询排序 NSSortDescriptor *sort = [NSSortDescriptorsortDescriptorWithKey:@"name" ascending:YES]; request.sortDescriptors = @[sort];
    // 定义查询结果控制器 _fetchedResultController = [[NSFetchedResultsController alloc]initWithFetchRequest:request
    managedObjectContext:context sectionNameKeyPath:nilcacheName:nil]; ...
    [
    _fetchedResultController performFetch:&error];

    查询数据 
    NSFetchRequest *request = [NSFetchRequestfetchRequestWithEntityName:@"Person"];
    request.predicate = [NSPredicatepredicateWithFormat:@"%K LIKE '*52*' OR name CONTAINS ''", @"phoneNo"];
    NSArray *array = [_contextexecuteFetchRequest:request error:nil];

    更新&删除记录 
    1. 找到要更新、删除的记录 2. 更新:修改对象属性3. 删除:上下文删除对象 4. 上下文保存

    Core Data的调试 




    技术博客http://www.cnblogs.com/ChenYilong/ 
    新浪微博http://weibo.com/luohanchenyilong
     
     
     

    下面是iOS数据库操作之coredata详细操作步骤:附上pdf文档和示例程序:

    CoreData
    1. 常用类和方法 (注意需要导入 coredata 框架 )
    表结构:NSEntityDescription
    表记录:NSManagedObject 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者) 数据库操作:NSManagedObjectContext(被管理的对象上下文)
    2. xcode 图形管理
    2. 3.
    4.
    2.操作数据库
    一.连接数据库
    1. 首先需要创建一个操作数据库的上下文。NSManagedObjectContext
    1. 操作数据库的上下文需要设置一个调度者属性,这个调度者是用来将图形化
      建立的模型和数据库联系起来。
    1. 给调度者添加一个需要联系的数据库。
    二.添加,更新,删除
    添加:
    1. 新建实体 INST (插入) 2. 设置实体的属性
    3. 保存上下文
    更新:
    1. 判断是否已有一模一样的模型 2. 设置实体属性
    3. 保存上下文
    删除
    三.查询
    1.使用 NSFetchedResultsController 控制器
    2.1 当操作数据上下文的内容改变的时候,会自动调用抓取结果控制器的代理方 法
    3.
    注意:一定要执行抓取请求,返回的数据在 sections 里,这个数组中装的都是遵 守 NSFetchedResultsSectionInfo 这个协议的对象。通过
    numberOfObjects 就能获取一组有多少数据对象了。
     
     

    1. 建立数据模型DataModel

    * Entity - Entities(实体)
    暂时理解为数据库中的表,在定义数据模型时,第一步就要定义实体
    * Attributes(属性)
    暂时理解为数据库中的字段

    2. 建立NSManagedObject(被管理的对象)

    以上操作全部用鼠标就可以完成(属性名字除外)
    在数据模型最终确立之前,person.h&person.m中的内容都是自动生成的,不需要修改其中代码。

    NSManagedObject的内容是通过图形化的界面确定实体的属性之后,自动生成的。

    @dynamic 编译器会动态生成getter&setter方法,提高程序的扩展度。

    FetechedResultController执行查询后,返回遵守了
    NSFetchedResultsSectionInfo协议的对象的数组


    除了安全,设计公司高级机密的,可以使用静态库
    .a
    .framework

    对于iOS程序员,如果将自己的代码包在.a,会形成依赖!

     
     
     
     
     
     
     
     
     
    coredata第三方框架,附上官方示例程序:
    数据库工具_CoreData_MagicalRecord-develop
     
     
     
    © chenyilong. Powered by Postach.io
  • 相关阅读:
    线性代数思维导图——3.向量
    微分中值定理的基础题型总结
    构造函数
    Python课程笔记(七)
    0241. Different Ways to Add Parentheses (M)
    0014. Longest Common Prefix (E)
    0013. Roman to Integer (E)
    0011. Container With Most Water (M)
    0010. Regular Expression Matching (H)
    0012. Integer to Roman (M)
  • 原文地址:https://www.cnblogs.com/ChenYilong/p/3720382.html
Copyright © 2011-2022 走看看