zoukankan      html  css  js  c++  java
  • 数据库-Core Data

    数据库-Core Data

    讲师:刘凡

    技术博客:http://www.cnblogs.com/liufan9

    新浪微博:http://weibo.com/liufan2012

    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)

    要使用Code Data,首先需要定义模型文件,描述应用程序中的所有实体(Entity)

    所谓实体,是跟数据库进行映射的对象

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

    Core Data主要对象关系示意图

    Core Data主要对象

    NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)

    NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管理不同对象上下文

    NSManagedObjectModel:被管理的对象模型,对应定义的模型文件

    NSEntityDescription:实体描述

    打开数据库

    // 1. 实例化持久化的存储

    // 1.1 从Bundle中加载被管理的数据模型

    NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];

    // 1.2 实例化持久化存储调度

    NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];

    ...

    // 1.3 添加持久化存储(SQLite)

    [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];

    ...

    // 管理对象上下文

    _context = [[NSManagedObjectContext alloc] init];

    _context.persistentStoreCoordinator = store;

    新增记录

    新增记录

    Person *p = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:_context];

    p.name = @"张三";

    p.age = @18;

    [_context save:nil];

    查询数据

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];

    request.predicate = [NSPredicate predicateWithFormat:@"%K LIKE '*52*' OR name CONTAINS '三'", @"phoneNo"];

    NSArray *array = [_context executeFetchRequest:request error:nil];

    更新&删除记录

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

    Core Data的调试

    Q & A

    Thanks!

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/niexiaobo/p/4888685.html
Copyright © 2011-2022 走看看