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

COMSOL电磁仿真案例——感应线圈

COMSOL电磁建模仿真案例——感应线圈

冲击10w 6万+

Arduino软串口实战:用TTL转RS485模块解决电机通信难题(附完整代码)

本文针对Arduino Uno硬串口与RS485半双工通信不兼容导致电机控制无响应的问题,提供了基于软串口(SoftwareSerial)的完整解决方案。详细讲解了TTL转RS485模块的选型、硬件连接避坑(推荐引脚8和7),并附带了完整的代码实现与调试指南,帮助开发者稳定实现Arduino与电机驱动器的RS485通信控制。

5f4d3s2a1q的博客 777

SwiftUI之CoreData详解(一)

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

zxmatline的博客 2998

从零构建工业级SPI-CAN网关:CH347与CH9431的软硬件协同设计实战

本文详细介绍了基于CH347和CH9431芯片构建工业级SPI-CAN网关的完整方案。通过硬件架构设计、Linux驱动定制、并发处理优化和EMC抗干扰测试,实现高可靠性通信网关,适用于工业自动化和汽车电子等严苛环境。

spark7igniter的博客 632

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

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

高小波_heat 的博客 459

monocle3-单细胞轨迹分析在疾病研究中的应用

本文深入探讨了monocle3在单细胞轨迹分析中的核心应用,特别是在疾病研究领域。通过实战案例,详细讲解了如何利用monocle3进行轨迹推断,构建细胞状态演变的“路线图”,并结合伪时间分析定位疾病进展阶段。文章还介绍了如何挖掘驱动疾病发展的关键基因,并分享了数据整合、根节点选择等进阶技巧与避坑指南,旨在帮助研究者利用这一强大工具揭示肿瘤异质性、免疫治疗耐药等复杂生物学过程的动态机制。

a3b4c5的博客 638

Vue集成天地图:从定位到交互绘图的完整实践指南

本文详细介绍了如何在Vue项目中集成天地图API,从基础配置到高级功能实现,包括定位、标点、画线等交互绘图功能。通过实战代码示例和性能优化技巧,帮助开发者快速掌握Vue与天地图的结合应用,提升地图开发效率。

weixin_29013129的博客 247

Coredata版本升级注意事项

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

ShengLinSL的专栏 704

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5628

CoreData的NSManagedObjectContext创建

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

孤城的博客 1621

Unity3D Pico VR 手势交互实战:基于MRTK3实现抓握与射线控制

本文针对Pico VR原生手势交互功能不足的问题,提供了基于MRTK3实现高级手势交互的实战解决方案。通过将MRTK3成熟的交互框架与Pico的手势追踪能力相结合,详细讲解了从环境配置、SDK导入、核心适配到真机调试的全流程,帮助开发者高效实现抓握与射线控制等复杂交互,有效提升Pico VR应用的开发效率与体验。

weixin_29011667的博客 391

SwarmClaw:自托管多智能体AI运行时部署与实战指南

多智能体系统是人工智能领域的重要发展方向,它通过多个具备自主决策和协作能力的智能体共同完成任务,其核心原理在于分布式问题求解与协同规划。这种架构在提升任务处理效率、复杂问题分解和鲁棒性方面具有显著技术价值,广泛应用于自动化工作流、虚拟团队协作、智能客服和个性化助手等场景。本文聚焦于SwarmClaw这一自托管的多智能体AI运行时,它原生支持Model Context Protocol,并内置了超过23种AI提供商,为开发者提供了一个开箱即用且高度可定制的控制平面,便于构建和管理复杂的多智能体协作网络。

weixin_27207591的博客 401

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

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

weixin_30879833的博客 88

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

07-CoreData清除所有数据

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

坤小的专栏 5992

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

weixin_30849591的博客 82

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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、付费专栏及课程。

余额充值