iOS的CoreData技术笔记

Posted 搜狐技术产品

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS的CoreData技术笔记相关的知识,希望对你有一定的参考价值。

方案叫 对象→关系映射(英文简称ORM)。

除了这个最重要的特性,Core Data还提供了很多有用的特性,比如回滚机制,数据校验等。

图1: Core Data与应用,磁盘存储的关系

即可创建。

默认系统提供的命名为 Model.xcdatamodeld 。下面我依然以 Model.xcdatamodeld 作为举例的文件名。
这个文件就相当于数据库中的“库”。通过编辑这个文件,就可以去添加定义自己想要处理的数据类型。

和 一对多→to many

Core Data允许我们配置这种联系,具体做法就是在RelationShip栏点击对应的关系栏,它将会出现在右侧的栏目中。(栏目如果没出现可以在xcode右上角的按钮调出,如果点击后栏目没出现Relationship配置项,可以多点击几下,这是xcode的小bug)。
Relationship的配置项里,有一项项名为Type,点击后有两个选项,一个是To One(默认值),另一个就是To Many了。

图3: 数据模型的关系配置


NSPersistentContainer

蕴含着的意思,就是 仓库、容器、集装箱。
进入正式的代码编写的第一步,我们先要在使用Core Data框架的swift文件开头引入这个框架:
持久化方案,现在我们在Model.xcdatamodeld已经建立了两个Entity,那么如果在代码里要操作他们,是不是会有对应的类?
答案是确实如此,而且你还不需要自己去定义这个类。
如果你点击Model.xcdatamodeld编辑窗口中的Book这个Entity,打开右侧的属性面板,属性面板会给出允许你编辑的关于这个Entity的信息,其中Entity部分的Name就是我们起的名字Book,而下方还有一个Class栏,这一栏就是跟Entity绑定的类信息,栏目中的Name就是我们要定义的类名,默认它和Entity的名字相同,也就是说,类名也是Book。所以改与不改,看个人思路以及团队的规范。
所有Entity对应的类,都继承自NSManagedObject
为了检验这一点,我们可以在代码中编写这一行作为测试:
的阶段,正式进入到 产生和操作数据 的阶段。


就成了,读取的示例代码:
的书。
在新的代码示例里,我们在之前实现的readBooks函数代码里略作修改:
的书,因为我们之前已经保存过这本书,所以可以正确筛选出来。
筛选方案还支持大小对比,如
这本书书名修改为 算法(第5版) ,可以按照如下代码示例:
的思路,先拿到筛选的书本,然后修改书本的名字,当名字被修改后,context将会知道数据被修改了,这时候判断数据是否被修改(实际上不需要判断我们也知道被修改了,只是出于编码规范加入了这个判断),如果被修改,就保存数据,通过这个方式,成功更改了书名。

的思路,找到我们想要的思路,并且删除它。删除的方法是通过contextdelete函数。
以下例子中,我们删除了所有 isbm="9787115293800" 的书籍:

Kaggle TOP1:神奇的时序Trick直接炸榜

2021-07-22

MotionLayout动画从未如此简单!

2021-07-15

JetPack Compose从初探到实战

2021-06-17

从YYModel源码分析JSON解析原理

2021-06-03


iOS CoreData技术学习资源汇总

1. 苹果官方:Core Data Programming Guide

  什么是CoreData?

  创建托管对象模型

  初始化Core Data堆栈

  提取对象

  创建和修改自定义托管对象

2.Core Data在 macOS 10.12 , iOS 10.0, tvOS 10.0和watchOS 3.0中的新特性

3.

以上是关于iOS的CoreData技术笔记的主要内容,如果未能解决你的问题,请参考以下文章

机电传动控制读书笔记二(书本内容)

iOS CoreData技术学习资源汇总

Uva230

CoreData 关系混乱

《世界是数字的》读书笔记

iOS 高级框架的介绍

(c)2006-2024 SYSTEM All Rights Reserved IT常识