CoreData 入门级教程,以及注意事项

CoreData相关01 基础及运用:添加、查询、过滤、排序、分页 CoreData CoreData中几乎不用写数据库操作语句就能完成数据的本地化存储。 CoreData和iOS中的模型对象相联系在一起,只需要操作模型对象的增删改查就可以完成数据的增删改查,不用写SQL语句。 CoreData的存储方式 SQLite NSSQLiteStoreType XML NSXMLStoreType Binary NSBinaryStoreType 内存存储 NSInMemoryStoreType CoreData的核心对象 NSManagedObjectContext 用途:负 阅读详情

一、简介

       受朋友之邀,写篇关于CoreData 入门级教程,Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句。

二、开始创建

2.1、创建工程


2.2 添加实体


2.3 添加属性


2.4创建 PYBook类

记得在xcode 4.6的时候,PYBook类 是可以自动生成的(File->New->CoreData->NSManageredObjectSubClass->选择PYBook),由于用这里使用的是Xcode 8.3 ,和xcode老版本略有区别,如下图



三、打开CoreData的SQL语句输出开关

1.打开Product,点击EditScheme...
2.点击Arguments,在ArgumentsPassed On Launch中添加2项
1> -com.apple.CoreData.SQLDebug
2> 1

如下图所示


四、解决CoreData 数据结构后,更新安装会闪退的问题

使用IOS的CoreData进行存储很方便,CoreData已经帮我们做了很多基础的工作,一般情况下没必要自己操作数据库了。在开发中修改了实体模型,可能会遇到schema incompatibility的错误,这是因为修改了数据结构,要进行数据迁移。其实很多简单的情况,不用这么麻烦,Coredata提供了轻量级的自动数据迁移,比如以下三个情况会自动进行:
1.简单的增加一个字段
2.把一个必填字段改为可选字段
3.把可选字段改为必填字段(但一定要定义默认值)     

 如果iOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表、字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下:

4.1.创建新的版本

选中你的PYCoreData.xcdatamodel 文件,选择菜单editor->Add Model Version  比如取名:PYCoreData2.xcdatamodel


4.2.设置当前版本 

   选择上级PYCoreData.xcdatamodel ,在inspector中的Versioned Core Data Model选择Current模版为 PYCoreData2


4.3.修改数据库表结构

修改新数据模型PYCoreData,在新的文件上添加字段及表

4.4 类重建

如果设置的是手动创建类,则删除原来的类文件,重新生成下类

4.5 在App delegate类里修改persistentStoreCoordinator方法

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it.
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }
    
    // Create the coordinator and store
    
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"PYCoreData.sqlite"];
    NSError *error = nil;
    
    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
    
    NSString *failureReason = @"There was an error creating or loading the application's saved data.";
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
        // Report any error we got.
        NSMutableDictionary *dict = [NSMutableDictionary dictionary];
        dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data";
        dict[NSLocalizedFailureReasonErrorKey] = failureReason;
        dict[NSUnderlyingErrorKey] = error;
        error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];
        // Replace this with code to handle the error appropriately.
        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    
    return _persistentStoreCoordinator;
}

4.6 在App delegate中指定momd资源

- (NSManagedObjectModel *)managedObjectModel {
    // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"PYCoreData" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}



变幻莫测:CoreData 中 Transformable 类型面面俱到(四) 在本篇博文中,我们讨论了如何将自定义结构的值转换为 Transformable 类型。 阅读详情

相关推荐

SwiftUI Cloudkit Coredata 入门教程一篇文章搞定云存储(教程含源码)

实战需求 云同步是现代App必备的功能,如何实现云存储呢? 这个问题要是放到10年钱,大概组织几十人的团队,投入上千万才能实现这个功能。如今我们却可以一个人几分钟就实现如此强大功能。 项目最终效果 需要工具 1、xcode 需要11.6以后 2、iOS 13 以后 3、macOS 10.15之后,建议11 4、开发者账号 基础知识(可以跳过,运行完项目后在阅读) @FetchRequest 一种属性包装器类型,它可以进行提取请求并从Core Data存储中检索结果。 @propertyWrappe

iCloudEnd的博客 1168

iOS CoreData的使用

CoreData是一个专门管理数据服务的框架,把OC对象和存储在SQLite文件中的数据进行互相转换,极大地方便了开发者在数据服务方面的开发。 1. 创建CoreData 在文件创建区下,选择【Core Data】下的【Data Model】 输入CoreData的文件名Model.xcdatamodel Model.xcdatamodeld文件默认是Swift的,如果想要改成oc,可以在打开Model.xcdatamodeld文件,在右侧工具栏中修改。 2. 创建Entity CoreData文件下

假装你是大灰狼的专栏 6722

深入理解CoreData:iOS应用数据管理实战示例

本文还有配套的精品资源,点击获取 简介:本项目是一个关于使用Apple的CoreData框架在iOS平台上管理应用数据的示例。CoreData是一个功能强大的对象图形管理系统,负责存储、检索和管理模型层对象。开发者可以通过创建数据模型、设置实体关系、执行查询及更新数据库来详细了解其工作原理。本示例详细展示了如何在Xcode项目中实现这些操作,包括数据模型设计、实体关系配置、...

weixin_36019375的博客 1146

深入浅出Core Data:从入门到精通

本教程将带你深入探索苹果开发平台中的Core Data技术,专为使用Swift 4的开发者设计。通过丰富的实例和实践指导,你将全面掌握数据管理框架的核心概念与技术。教程内容涵盖模型设计、上下文管理、托管对象操作、数据检索、持久化存储、生命周期管理、事务处理、性能优化和错误处理等。学完本教程,你将能够构建高效的应用,实现从基础数据存储到高级查询和数据同步的技能飞跃。Core Data是iOS和macOS应用中广泛使用的持久化框架,由Apple推出,用于管理数据模型、数据对象以及数据持久化。

abcliuliu120的博客 1499

Innovus实战:5分钟搞定postRoute阶段冗余hold buffer的自动清理(附PHC识别技巧)

本文分享了在数字IC后端设计中使用Innovus工具,于postRoute阶段自动清理冗余hold buffer的实战技巧。通过配置时序感知的面积回收模式,可在5分钟内安全移除非关键路径上的PHC缓冲器,有效优化芯片面积与功耗,并附有PHC识别与验证方法。

moon9的博客 400

手把手教你用AFL挖掘C程序漏洞:从安装到实战(附常见错误排查)

本文详细介绍了如何使用American Fuzzy Lop (AFL)对C/C++程序进行模糊测试,从环境准备、目标程序插桩编译、初始语料库构建到实战运行与结果分析。重点讲解了AFL的安装、常见错误排查(如核心转储配置、执行速度优化)以及提升测试效率的高级策略(如持久模式、并行化),帮助开发者和安全工程师高效挖掘程序漏洞。

weixin_29014237的博客 407

SwiftUI之CoreData详解(一)

coreData是一种数据持久化的方案,是对SQLite的一种封装。一说到这种桌面化的数据库,我就无比的怀念, 多好的数据库产品,被微软扼杀了,相当年教大学生妹子们国家二级数据库时都是手把手教的,呃~~~,不好意思,说的有点跑题了。要想使用coreData, 首先我们要先创建一个模型文件,它是一个结尾的文件,这个模型文件说白了就是一个库,是的,因为coreData。

zxmatline的博客 2998

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

多尺度卷积注意力(MSCA),有效地提取上下文信息;1)作为注意力MSCA使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3842

升级app时coreData的处理及注意事项

如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表、字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下:(请仔细阅读下面四句话) 1.升级数据库模型:选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version 比如取名:mydata2.xcdatamodel 2.设置当前

高小波_heat 的博客 459

电机驱动器MP6540H应用设计

/ ... 其他初始化函数(SystemClock_Config, MX_GPIO_Init, MX_TIM1_Init, MX_TIM2_Init)需要你根据STM32CubeMX生成或手动编写。// 假设霍尔传感器引脚是 GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10。// 低侧U相GPIO引脚。

zhusl6688的博客 657

【QT开发】web开发,内嵌网页展示和交互工具QWebEngineView类详解及实战应用

QWebEngineView 类为 Qt 应用提供了强大的网页展示和交互能力。通过合理运用其方法、属性和事件,能够创建出功能丰富、用户体验良好的网页浏览界面。在开发过程中,要注意处理常见问题,以确保网页的正常展示和交互效果。

科技改变人类,技术成就未来 2004

Coredata版本升级注意事项

关于Coredata版本升级的文章就很多

ShengLinSL的专栏 704

dji psdk开发 关于SDK认证芯片的使用

Payload SDK V3.10.0 于 2025-1-8 发布,增加了 Matrice 4T/4E 机型支持,同时也增加了 DJI SDK 认证芯片(DJI SDK CC)功能支持。关于认证芯片的介绍大疆 SDK 认证芯片(DJI SDK Certified Chip),简称 DJI SDK CC,用于认证基于 DJI Eport/Eport-Lite 接口开发的第三方负载设备,确保设备能够正常工作并与无人机可以进行有效通信,起到负载安全认证和功能授权的作用。

热爱生活,忠于自己 2142

CoreData的NSManagedObjectContext创建

如果想要对Coredata进行一系列的操作,就必须要先初始化NSManagedObjectContext,那么怎么得到Context呢?有两种方法: 一种是通过UIManagedDocument获得: 这种比较麻烦,代码如下 self.document = [[UIManagedDocument alloc] initWithFileURL:(URL *)url];

孤城的博客 1621

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

MFC 中实现 WebSocket 客户端以支持实时双向通信

3. **协议兼容**:若服务器使用 `wss://`(加密),需在 `lws_client_connect_info` 中配置 SSL 相关参数(`ssl_connection = LCCSCF_USE_SSL`)。- 编辑框(`m_editUrl`):输入 WebSocket 服务器地址(如 `ws://echo.websocket.events`)。2. 将编译后的库文件(`.lib`、`.dll`)和头文件路径添加到 MFC 项目中(项目属性 -> VC++ 目录)。// UI:服务器地址。

寒寒豆豆软件公司的博客 202

iOS CoreData介绍和使用(以及一些注意事项)

iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊。不过这门技术的出现也有其存在价值,这是不可否认的事实,即使是不喜欢我们也得去了解一下,因为你不用别人会用,这年头都多人开发,多学点还是有好处的。废话不多说了,该开始正经事了。 ...

weixin_30879833的博客 88

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

07-CoreData清除所有数据

CoreData清空数据库 清空数据库可以使用删除文件的方式 通过沙盒路径进入到沙盒可以看到数据库文件有三个,我们逐一删除便可 代码中的kFileName是一个宏 表示创建的数据库文件名 NSF

坤小的专栏 5992

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS CoreData 介绍和使用(以及一些注意事项)

iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊。不过这门技术的出现也有其存在价值,这是不可否认的事实,即使是不喜欢我们也得去了解一下,因为你不用别人会用,这年头都多人开发,多学点还是有好处的。废话不多说了,该开始正经事了。 ...

weixin_30849591的博客 82

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CoreData

数据持久化, 本地存储数据

青山流云的博客 385

认识CoreData-基础使用

来源:伯乐在线专栏作者 - 刘小壮  链接:http://ios.jobbole.com/87291/ 点击 → 了解如何加入专栏作者 认识CoreData-初识CoreData 第一篇文章中并没有讲CoreData的具体用法,只是对CoreData做了一个详细的介绍,算是一个开始和总结吧。 这篇文章中会主要讲CoreData

cleven 296
上一篇: spring过滤空指针
下一篇: Hbuilder打包app流程
puyangdev
博客等级 码龄10年 10粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值