CoreData

article/2025/8/19 20:31:13
  Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。

(1)NSManagedObjectModel(被管理的对象模型)

       相当于实体,不过它包含 了实体间的关系(2)NSManagedObjectContext(被管理的对象上下文)操作实际内容作用:插入数据  查询  更新  删除

(3)NSPersistentStoreCoordinator(持久化存储助理)

      相当于数据库的连接器(4)NSFetchRequest(获取数据的请求)相当于查询语句(5)NSPredicate(相当于查询条件)(6)NSEntityDescription(实体结构)(7)后缀名为.xcdatamodel的包里面的.xcdatamodel文件,用数据模型编辑器编辑编译后为.momd或.mom文件,这就是为什么文件中没有这个东西,而我们的程序中用到这个东西而不会报错的原因

首先我们要建立模型对象
这里写图片描述
生成模型对象的实体 创建好所需要的Attribute 和Type
然后 Create NSManagerObject…..
这里写图片描述

下面这个截图是创建后自动生成的实体
这里写图片描述
这里写图片描述
解释一下dynamic
dynamic和synthesize有什么区别呢?dynamic的setter和getter方法不能自已定义

然后新建一个类进行增删改查
.h文件

#import <UIKit/UIKit.h>
#import "MusicCollect+CoreDataProperties.h"@class AppDelegate;@interface CoreDataModelCollectManager : NSObject
//单例
+ (CoreDataModelCollectManager *)shareCoreDataModelManager;//保存
- (void)saveMusicModelWithSongName:(NSString *)songNamesingerName:(NSString *)singerNameurl:(NSString *)url;
//删除
- (void)deleteMusicWithSongName:(NSString *)songName;
//查找
- (NSArray *)fetchSongWithSongName:(NSString *)songName;
//更改
- (void)updateMusicWithSongName:(NSString *)songNamenewSongName:(NSString *)newSongNamenewSingerName:(NSString *)newSingerNamenewUrl:(NSString *)newUrl;
@end

.m文件

#import "CoreDataModelCollectManager.h"
#import "AppDelegate.h"@interface CoreDataModelCollectManager ()
@property (nonatomic, strong) AppDelegate *appDelegate;
@endstatic CoreDataModelCollectManager *manager;
@implementation CoreDataModelCollectManager
//单例
+ (CoreDataModelCollectManager *)shareCoreDataModelManager{@synchronized(self) {if (!manager){manager = [[CoreDataModelCollectManager alloc] init];manager.appDelegate = [UIApplication sharedApplication].delegate;}}return manager;
}
//保存
- (void)saveMusicModelWithSongName:(NSString *)songNamesingerName:(NSString *)singerNameurl:(NSString *)url{NSMutableArray *array = [NSMutableArray arrayWithArray:[self fetchSongWithSongName:songName]];if (array.count > 0){NSLog(@"已有重复数据");return;}NSEntityDescription *description = [NSEntityDescription entityForName:@"MusicCollect" inManagedObjectContext:self.appDelegate.managedObjectContext];MusicCollect *music = [[MusicCollect alloc] initWithEntity:description insertIntoManagedObjectContext:self.appDelegate.managedObjectContext];music.name = songName;music.singerName = singerName;music.url = url;NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];NSLog(@"%@", documentsPath);[self.appDelegate saveContext];
}
//删除
- (void)deleteMusicWithSongName:(NSString *)songName{NSMutableArray *array = [NSMutableArray arrayWithArray:[self fetchSongWithSongName:songName]];if (array.count > 0){for (MusicCollect *music in array) {[self.appDelegate.managedObjectContext deleteObject:music];}}
}
//查找
- (NSArray *)fetchSongWithSongName:(NSString *)songName{NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];NSEntityDescription *entity = [NSEntityDescription entityForName:@"MusicCollect" inManagedObjectContext:self.appDelegate.managedObjectContext];[fetchRequest setEntity:entity];// Specify criteria for filtering which objects to fetchNSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = '%@'", songName];[fetchRequest setPredicate:predicate];// Specify how the fetched objects should be sortedNSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name"ascending:YES];[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];NSError *error = nil;NSArray *fetchedObjects = [self.appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];if (fetchedObjects == nil) {NSLog(@"没有搜到对应歌曲");}return fetchedObjects;
}//更改
- (void)updateMusicWithSongName:(NSString *)songNamenewSongName:(NSString *)newSongNamenewSingerName:(NSString *)newSingerNamenewUrl:(NSString *)newUrl{}@end

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

相关文章

Core Data详解

转载于&#xff1a;程序媛与程序猿 7.1. 什么是Core Data Core Data是一个Cocoa框架&#xff0c;用于为管理对象图提供基础实现&#xff0c;以及为多种文件格式的持久化提供支持。管理对象图包含的工作如撤销&#xff08;undo&#xff09;和重做&#xff08;redo&#xff…

Coredata的版本升级

在开发的后期&#xff0c;可能因为完善和修复功能&#xff0c;需要对Coredata数据库表进行修改&#xff0c;这样就需要对CoreData进行版本升级。 比如你修改了DB字段以后&#xff0c;用户在旧版本上升级为新版本时会crash. 因为升级只升级了应用app,没有升级目录下的数据据db文…

在建好的项目中加入CoreData

这几天在做一个ios的小项目&#xff0c;项目中需要对数据进行基本的增删改查操作。于是就想用一把CoreData。但在创建项目初期&#xff0c;没有包含进CoreData。于是就在已建好的项目中加入CoreData。由于第一次用CoreData&#xff0c;各方面还不是很熟悉&#xff0c;在网上爬文…

CoreData的简单使用

简介 Core Data是iOS5之后才出现的一个框架&#xff0c;它提供了对象-关系映射(ORM)的功能&#xff0c;即能够将OC对象转化成数据&#xff0c;保存在SQLite数据库文件中&#xff0c;也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间&#xff0c;我们不需要编写任何…

数据持久化(五)之CoreData

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

coredata 详解

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

Core Data 详解

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

Core Data概述

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

CoreData 的使用

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

Core Data的使用

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

CoreData简单使用

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

ios中的coredata的使用

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

CoreData使用

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

iOS CoreData的使用

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

Core Data 概述

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

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

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

JVM原理分析

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

JVM实现原理

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

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

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