iOS---CoreData的创建和添加数据

本文介绍了如何在iOS中使用CoreData进行数据库的创建和数据添加。首先,理解CoreData的关系图,接着讲解了通过Xcode创建CoreData的步骤,包括数据模型、数据持久化和数据操作对象的创建。最后,详细阐述了如何生成model类,并通过代码实现添加数据到CoreData的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.先理解一下coredata中的关系图:

这里写图片描述

二.CoreData的创建步骤:

准备工作:
方法一:新建一个工程,并勾选”Core Data”
方法二:创建一个”Core Data”的类
然后再添加实体,如图(这只是一个示范数据):
这里写图片描述
1.数据模型 (NSManagedObjectModel的创建)
2. 数据持久(NSPersistentCoornaditor的创建,装载数据)
3. 数据操作对象(NSManagedObjectContext的创建)

三.CoreData添加数据

  1. 使用xcode工具自动生成model类,点击”core data”的文件,然后选择菜单栏上的”Editor”,再选择”addNSManagerObjectsModel Subclass”,选择core data 和实体,就创建了一个类目,和一个model类
    这里写图片描述 如下图:
    5.创建MO对象,用实体描述类
    6.给MO对象属性赋值
    7.把上下文保存下来

三.代码实现

#import "ViewController.h"
#import <CoreData/CoreData.h>
#import "Hero.h"

@interface ViewController ()
{

    NSManagedObjectContext *context;

}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%@",NSHomeDirectory());


    [self createCoreDataBase];

    [self addObject];


    // Do any additional setup after loading the view, typically from a nib.
}
//创建数据库
-(void)createCoreDataBase{

    //CoreData:
    //根据CoreDataModel文件,在磁盘中创建sqlite文件


    //1 NSManagedObjectModel
    //xcdatamodeld文件编译打包到bundle中,转变成momd文件
    NSURL *dataUrl = [[NSBundle mainBundle]URLForResource:@"CoreDataModel" withExtension:@"momd"];

    NSManagedObjectModel *dataModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:dataUrl];

    //2 根据dataModel对象创建协调器

    // 1>创建协调器 (建立数据<--->MO对象的联系)
    // 使用这个对象,间接操作数据库文件
    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:dataModel];

    //2>给协调器对象添加一个持久化的对象
    /*CoreData支持的存储数据的文件类型
     NSSQLiteStoreType:SQLite
     NSXMLStoreType    XML
     NSBinaryStoreType 二进制
     NSInMemoryStoreType 只保存在内存中
     */

    //数据库文件在沙盒保存的路径
    NSString *persistentPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/PersistentStore.sqlite"];

    NSURL *persistentUrl = [NSURL fileURLWithPath:persistentPath];

    NSError *addError = nil;
    [psc addPersistentStoreWithType:NSSQLiteStoreType
                      configuration:nil //配置
                                URL:persistentUrl //数据库文件保存的路径
                            options:nil error:&addError];


    //3 保存数据模型的上下文           
    context = [[NSManagedObjectContext alloc]init];
    //指定contex使用哪个协调器写入数据库
    context.persistentStoreCoordinator = psc;



}

//添加数据
-(void)addObject{

    //0 创建model模型

    /*
    //添加一条数据 (MO对象)
    Hero *h1 = [[Hero alloc]init];

    //将MO对象添加到上下文中
    [context insertObject:h1];

    h1.name = @"haha";

    [context save:nil];
    */

    //创建MO对象,使用实体描述类
    /*
     EntityForName:data model文件中的哪个实体
     Context:要插入的上下文
     */
    Hero *h1 = [NSEntityDescription insertNewObjectForEntityForName:@"Hero"
                                  inManagedObjectContext:context];
    h1.name = @"孙悟空";
    h1.heroId = @100;
    h1.team = @"西天取经队";
    h1.height = @1.5;

    //把上下文的变化保存下来
    NSError *saveError = nil;
    [context save:&saveError];    
}
@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值