CoreData的简单使用

article/2025/8/19 20:20:51

简介

Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于著名的Hibernate持久化框架,不过功能肯定是没有Hibernate强大的。
Core Data只是一个个框架,并不是数据库,它使开发者可以把数据当做对象来操作,而不必在乎数据在磁盘中的存储方式。对于iOS程序员来说,这是很有用,因此我们已经可以通过代码非常熟悉的操作对象了。

简单使用

一、对象文本上下文的创建(1和2,任选其一)
1.可以在创建Xcode时,勾选use Core Data快速创建对象文本上下文。
这里写图片描述

这样在工程,AppDelegate.h和AppDelegate.m文件中,使用CoreData需要用到的对象文本上下文,model,持久化存储调度器,以及一些方法就会被自动生成。我们只需要获取使用就是。

AppDelegate.h中
这里写图片描述
AppDelegate.m中
这里写图片描述

这样,我们只需要在使用的类里面获取所要使用的上下文就可以进行下一步了。

  AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;NSManagedObjectContext   *context= appDelegate.managedObjectContext;

2.就是在当前类中自己手动创建
我们把context设置为属性。使用前需要导入 #import

//    创建上下文_context = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];
//    创建持久化存诸调动器NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
//    存诸路径NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];/***  模型名*/NSString *sqlitePath = [path stringByAppendingPathComponent:@"Fuck.sqlite”];//
//    NSLog(@"%@",sqlitePath);NSError *error = nil;
//    配置调度器的配置[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nil error:&error];if (error) {NSLog(@"%@",error.localizedDescription);}
//    关联调试器和上下文_context.persistentStoreCoordinator= store;

二、创建实体关联模型和对象
1.创建Model
若由Xcode创建了对象文本上下文,那在工程中就已经存在以工程名为名的Data Model.
这里写图片描述
否则需要我们自己创建。进入新建文件,选择Core Data,选择Data Model,输入名字,创建即可.
这里写图片描述

这里写图片描述

这里写图片描述

配置model完成。

2、创建实体类。
进入新建文件,选择Core Data,选择NSMangerObject subclass.
这里写图片描述
选择model
这里写图片描述
选择实体
这里写图片描述
选择生成
这里写图片描述

三、进行增,删,查,改功能。
在使用的类里先导入 #import “Student.h”(以下我都写成点击事件里面)

1,增加成员对象
###pragma mark –增加

 -(IBAction)addEntity:(UIButton *)sender {//    创建学生1Student *limin = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:_context];limin.name = @"limin";limin.age = @(15);limin.heghit= @(1.9);//     创建学生2Student *wangwu = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:_context];wangwu.name = @"wangwu";wangwu.age = @(18);wangwu.heghit= @(2.1);//保存文本NSError *error = nil;[_context save:&error];if (error) {NSLog(@"%@",error.localizedDescription);}
}

2.读取成员对象

pragma mark –读取

- (IBAction)readEntity:(UIButton *)sender {//    创建查询请求NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];NSError *error =nil;//    创建查找条件//    NSPredicate *pre = [NSPredicate predicateWithFormat:@"deparment.name=%@",@"iOS"];//    request.predicate= pre;//    分页查找//    起始request.fetchOffset= 0;//    每页几条数据request.fetchLimit= 7;//  like模糊查询也是以l开头,*为通配符(若为@"*l"则是以什么结尾。同理@"*l*");NSPredicate *pre4= [NSPredicate predicateWithFormat:@"name LIKE %@",@"l*"];request.predicate=pre4;//    排序方式NSSortDescriptor *heighSort = [NSSortDescriptor sortDescriptorWithKey:@"heigh" ascending:YES];request.sortDescriptors= @[heighSort];//执行查找NSArray *emps = [_context executeFetchRequest:request error:&error];if (error) {NSLog(@"%@",error.localizedDescription);return;}for (Student *em in emps) {NSLog(@"name=%@,age=%ld,height=%f",em.name,[em.age integerValue],[em.heghit floatValue]);}

3.更新成员对象
###pragma mark –更新

- (IBAction)updateEntity:(UIButton *)sender {//   查找到对象NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];NSPredicate *pre= [NSPredicate predicateWithFormat:@"name=%@",@"limin"];request.predicate= pre;NSError *error = nil;NSArray *emps = [_context executeFetchRequest:request error:&error];if (error) {NSLog(@"%@",error.localizedDescription);return;}//    更新内容for (Student *em in emps) {em.name = @"limingFUCK";}[_context save:nil];
}

4.删除成员对象

pragma mark –删除对象

- (IBAction)deleteEntity:(UIButton *)sender {//    查找到对象NSFetchRequest  *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];NSPredicate *pre = [NSPredicate predicateWithFormat:@"name=%@",@"limin"];request.predicate = pre;NSError *error= nil;NSArray *emps= [_context executeFetchRequest:request error:&error];if (error) {NSLog(@"%@",error.localizedDescription);}//    执行删除for (Student *em in emps) {[_context deleteObject:em];}[_context save:nil];
}

工程代码分享,提取密码码:89vx。
这里写链接内容


http://chatgpt.dhexx.cn/article/AlDClyF6.shtml

相关文章

数据持久化(五)之CoreData

简单的说,Core Data就是可以存储到磁盘的对象图,[...]Core Data可以帮我们做很多任务作.它可以作为软件的整个模型层。它不仅仅在磁盘上存储数据,也把我们需要的数据对象读取到内存中。 ——Marcus Zarra, Core Data Core Data是Mac OS X中Cocoa API的一部分&#…

coredata 详解

原文:Core Data Overview,感谢CocoaChina翻译组帮忙校对。 Core Data可能是OS X和iOS里面最容易被误解的框架之一了,为了帮助大家理解,我们将快速的研究Core Data,让大家对它有一个初步的了解,对于想要正确…

Core Data 详解

Core Data是一个Cocoa框架,用于为管理对象图提供基础实现,以及为多种文件格式的持久化提供支持。管理对象图包含的工作如撤销(undo)和重做(redo)、有效性检查、以及保证对象关系的完整性等。对象的持久化意…

Core Data概述

昨晚熬夜看发布会(本以为屌丝终于能买得起苹果了,谁知道。。。),因为看不了视频直播,所以就正好有空就把www.objc.io最新的一篇文章翻译了一下,同时感谢CocoaChina翻译组提供校对,以下为正文: Core Data可能…

CoreData 的使用

CoreData其实就是Apple为开发者提供的便捷数据存储方式,本质是对sqlite数据库的操作,操作的数据量为中到大量。 操作数据库,还有FMDB第三方库,相比于FMDB,CoreData要更简单,更方便。 集成CoreData: 1,创…

Core Data的使用

初步看了一下Core Data这个东西,本想早一点写这篇东西的,不过各种俗事缠身,又觉得自己对于Core Data机制了解的还不够深,动笔就慢了几天。不过今天盘点一下,觉得可以说一点东西出来就先说一点吧。 Core Data到底是个什…

CoreData简单使用

苹果的CoreData框架(不限于)提供了一种数据持久化解决方案,它基于如下结构(图片来源苹果官网): 其中涉及了几个概念: NSManagedObject: 数据库中一条记录在内存的实例。 NSManagedObjectConte…

ios中的coredata的使用

Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。 (1)NSManagedObjectModel(被管理的对象模型) 相当于实体,不过它包含 了实体间的关系 (2…

CoreData使用

一、CoreData的简单使用 1.什么是CoreData 先认识一下这几个类 (1)NSManagedObjectContext(被管理的数据上下文) 作用:用来管理所有表的操作,对表的实体对应的数据库中的表的操作(插入,查询,修改…

iOS CoreData的使用

CoreData是一个专门管理数据服务的框架,把OC对象和存储在SQLite文件中的数据进行互相转换,极大地方便了开发者在数据服务方面的开发。 1. 创建CoreData 在文件创建区下,选择【Core Data】下的【Data Model】 输入CoreData的文件名Model.x…

Core Data 概述

Core Data 概述 转载自: http://www.cocoachina.com/newbie/basic/2013/0911/6981.html Core Data可能是OS X和iOS里面最容易被误解的框架之一了,为了帮助大家理解,我们将快速的研究Core Data,让大家对它有一个初步的了解&#x…

CoreData相关01 基础及运用:添加、查询、过滤、排序、分页

CoreData CoreData中几乎不用写数据库操作语句就能完成数据的本地化存储。 CoreData和iOS中的模型对象相联系在一起,只需要操作模型对象的增删改查就可以完成数据的增删改查,不用写SQL语句。 CoreData的存储方式 SQLite NSSQLiteStoreType XML NSXML…

JVM原理分析

JVM原理分析 为什么Java是一种跨平台语言 1、不同系统的JDK下载 JDK里面有:Jre和Jvm,其中就有JVM指令集的不同 JVM主要结构: 栈、堆、方法区、程序计数器、本地方法栈 mian方法的执行 通过类装载子系统进入JVM 其中栈中存放线程 来一个…

JVM实现原理

JVM原理 1、概念简介2、为什么要学习JVM虚拟机?3、JVM怎么学?3.1 内存管理1、jvm运行时数据区 1、概念简介 JVM:JAVA虚拟机JRE:Java运行环境 JREJVM虚拟机Java核心类库支持文件JDK:Java开发工具包 JDKJREJava工具Java…

【JVM调优】JVM原理与性能调优

一、参考资料 今日头条https://www.toutiao.com/i7007696978586976805

JVM原理和调优的理解和学习

JVM原理和调优的理解和学习 一、详解JVM内存模型二、JVM中一次完整的GC流程是怎样的三、GC垃圾回收的算法有哪些四、简单说说你了解的类加载器五、双亲委派机制是什么,有什么好处,怎么打破六、说说你JVM调优的几种主要的JVM参数七、JVM调优八、类加载的机…

JVM原理-jvm内存模型

一、jvm内存模型 结构图 JVM包含两个子系统和两个组件 Class loader(类装载子系统) 根据给定的全限定名类名(如:java.lang.Object)来装载class文件到 Runtime data area运行时数据区中的method area方法区中Execution engine(执行引擎) 执行classes中的指令Runt…

JVM原理-垃圾回收机制及算法

JVM原理-jvm内存模型 jvm内存模型 一、垃圾回收机制算法 1、 判断对象是否回收算法 垃圾收集器在做垃圾回收的时候,首先需要判定的就是哪些内存是需要被回收的,哪些对象是存活的,是不可以被回收的;哪些对象已经死掉了&#xf…

jvm面试原理

1、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…