CoreData学习笔记

首先介绍一下CoreData的主要对象,接下来是一个案例分解步骤和整体实现。

CoreData主要对象

    1.Managed Object Context (管理数据内容):

    操作实际内容(操作持久层)

    作用:插入数据,查询数据,删除数据

    

    2.Managed Object Model (管理数据模型):

    数据库所有数据表格或数据结构,包含各实体的定义信息

    作用:添加实体的属性,建立属性之间的关系

    操作方法:视图编辑器 代码

    

    3.Persistent Store Coordinator (持久性数据协调器):

    相当于数据库的连接器

    作用:设置数据存储的名字,位置,存储方式,存储时机

    

    4.Managed Object:

      相当于数据库中的表格记录

    

    5.NSFetchRequest (获取数据的请求):

    相当于查询语句

    

    6.NSEntityDescription (实体结构):

    相当于表格结构

    

    7.后缀为.xcdatamodeld的包:

    里面是.xcdatamodeld文件,用数据模型编辑器编辑

    编译后为.momd.mom文件

    

    CoreData中有几个概念要清楚Model,Entity,Attribute,Relationship.

    可以简单地用关系数据库的概念来解释:Modeldatabase,Entity对应一张表,Attibute为表中的字段,relationship为关系。


1.创建上下文

NSManagedObjectContext * context=[[NSManagedObjectContextalloc]init];

    context.persistentStoreCoordinator=psc;


2.创建基础库协调器

NSPersistentStoreCoordinator * psc=[[NSPersistentStoreCoordinatoralloc]initWithManagedObjectModel:model];


3.初始化模型

NSManagedObjectModel * model=[NSManagedObjectModelmergedModelFromBundles:nil];


4.为协调器添加基础库路径和基础库类型

[psc addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:urloptions:nilerror:nil];


5.获取沙盒路径

NSString * path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject];

    path=[path stringByAppendingPathComponent:@"Info.sqlite"];

   NSLog(@"%@",path);


6.拼接URL

NSURL * url=[[NSURLalloc]initFileURLWithPath:path];


7.创建表  - - - 插入数据

NSManagedObject * student=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:context];

    

    [studentsetValue:@"zhangsan"forKey:@"name"];

    [studentsetValue:@13forKey:@"age"];


8.创建第二个表

NSManagedObject * book=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Book"inManagedObjectContext:context];

    

    [book setValue:@"pipigou"forKey:@"name"];

    [book setValue:@"jiang"forKey:@"author"];

    [booksetValue:@10forKey:@"price"];


9.保存

NSError * error;

[contextsave:&error];





完整代码如下:

- (void)viewDidLoad {

    [superviewDidLoad];

    

    // 3>初始化模型

    NSManagedObjectModel * model=[NSManagedObjectModelmergedModelFromBundles:nil];

    

    // 2>创建基础库协调器

    NSPersistentStoreCoordinator * psc=[[NSPersistentStoreCoordinatoralloc]initWithManagedObjectModel:model];

    

    // 5>获取沙盒路径

    NSString * path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject];

    path=[path stringByAppendingPathComponent:@"Info.sqlite"];

   NSLog(@"%@",path);

    

    // 6>拼接URL

    NSURL * url=[[NSURLalloc]initFileURLWithPath:path];

    

    // 4>为协调器添加基础库路径和基础库类型

    [psc addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:urloptions:nilerror:nil];

    


    // 1>创建上下文

    NSManagedObjectContext * context=[[NSManagedObjectContextalloc]init];

    context.persistentStoreCoordinator=psc;


    

    // 7>插入数据 ---创建表

    NSManagedObject * student=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:context];

    //插入数据

    [studentsetValue:@"zhangsan"forKey:@"name"];

    [studentsetValue:@13forKey:@"age"];

    

    // 8>创建第二个表

    NSManagedObject * book=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Book"inManagedObjectContext:context];

    

    [book setValue:@"pipigou"forKey:@"name"];

    [book setValue:@"jiang"forKey:@"author"];

    [booksetValue:@10forKey:@"price"];

    

    

    // 6>保存

   NSError * error;

    [contextsave:&error];

    

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值