Core Data 学习: 数据模型(Data Model)

本文深入探讨Core Data中的数据模型,包括实体、属性和关系的定义,以及如何使用Xcode的数据模型编辑器进行操作。数据模型是Core Data的核心,用于映射持久化存储到管理对象。通过数据模型,你可以创建实体、定义属性和关系,并配置各种选项,如属性类型、索引、默认值等。此外,还介绍了关系的删除规则和实体继承,帮助理解Core Data如何处理对象间的关联和数据持久化。
摘要由CSDN通过智能技术生成

 数据模型(Data Model)


       前面文章中介绍了Core Data堆栈,它是Core Data的核心部分。并且了解了Core Data堆栈中管理对象上下文(managed object context),持久化存储协调者(persistent store coordinator),管理对象模型(managed object model)等组成部分。这篇文章我们将集中了解Core Data中的数据模型(data model)


      在我们的应用中,管理对象模型(NSManagedObjectModel)将允许 Core Data映射持久化存储的记录到管理对象。该模型是实体描述(NSEntityDescription实例对象)的集合。


      Core Data数据模型(储存在 *.xcdatamodel文件里)中定义了数据类型 ( Core Data里的实体)。大多数情况下,我们更偏向通过 Xcode 的图形界面去定义一个数据模型,但同样我们可以使用纯代码去完成这个工作。首先,你需要创建一个 NSManagenObjectModel对象,然后创建 NSEntitiyDesciption对象来表示一组实体,该实体通过 NSAttributeDescription NSRelationshipDescription对象来表示实体属性和实体之间的关系。


1:数据模型编辑器(Data Model Editor)


      首先打开我们自己之前创建的工程,打开Xcode,然后在Project Navigator中找到Core_Data_Stack.xcdatamodeld。并点击选中,Xcode将自动显示数据模型编辑部分(Data Model Editor),如下图所示:



2:实体(Entities)

      首先我们需要创建一个实体,在数据模型编辑器的底部,我们可以看到一个Add Entity的按钮,表示添加实体,Xcode会自动为实体命名为Entity,并且显示在数据模型编辑器左边区域ENTITIES部分,我们点击按钮添加一个实体,如下图:



     

     那么实体是什么呢?Entity:Core Data中的一个类,我们可以把实体类比为数据库中的表(其实也可以简单类比理解为OC中的类模型,我们自定义的类模型中将包含我们自己需要的属性。同样,实体类也将包含我们所需要的属性),当我们选中实体的时候,我们可以看到在右边区域会显示有attributes(属性), relationships(关系), fetched properties(获取属性).如上图所示,非常的明显。


3:属性(Attributes)


      一旦我们创建了某个实体,我们就需要去定义该实体的一些属性,属性定义是非常简单的。首先我们将实体名称改为Person,可以选择双击实体可以进行修改名称,也可以在最右边的实体可编辑区域进行编辑修改,找到编辑区域中的Name部分进行修改实体名称。现在我们为Perosn实体添加属性,Attributes区域的底部有"+""-"俩个按钮,很好理解,添加属性,去除属性,点击"+"添加我们的第一个属性,并且双击属性修改名称为first,点击type选择String类型,现在我们的Person实体就拥有了它自己的第一个属性,first属性。如下图所示,我们能够看到自己添加的属性:




      

      如果我们对比数据库中的表,那么Person表就拥有了一列String类型的first。事实,当我们在应用中使用SQLite数据库的时候,Core Data将创建表来存储Person实体中的数据。但是要注意:我们强大的Core Data并不是数据库。接下来再为Person实体添加几个属性,String类型的last属性,Integer16类型的age属性。




Attribute Options


        正如我前面提到的可以在右边区域修改实体的名称,那么实体的属性自然也就可以在数据模型编辑(Data Model Inspector)区域进行配置。我们选中Person实体的first属性,并且打开右侧的编辑区域,Data Model Inspector允许我们配置选中的属性,目前我们先了解一些基本的选项配置,如图所示:




瞬态(Transient)


       该选项标志着属性的值是否会保存到持久化文件。如果选中表示属性不会存储到持久化存储文件中。Transient通常用在属性的值是由其他属性计算或合成而来(比如fullName属性是根据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值