iOS CoreData详解(六)深入理解数据模型

本文深入探讨了iOS中的CoreData数据模型,包括属性(Attributes)和实体间的关系(Relationship)。属性中详细解释了Optional、Transient、Indexed及Validation的概念。在关系部分,阐述了一对一、一对多和多对多的关联,并讨论了Delete Rule的四种类型:Deny、Nullify、Cascade和NoAction,以及它们在不同场景下的应用。
摘要由CSDN通过智能技术生成

原创Blog,转载请注明出处
blog.csdn.net/hello_hwc
之前的五篇文章
1. 堆栈与基本概念
2. 基本操作
3. 与Tableview协作-NSFetchedResultController
4. CoreData原理Faulting and Uniquing
5. CoreData与多线程


前言:Coredata是一个良好的对象图管理工具。那么对象图也就是实体(Entity)的理解就尤为重要。实体包括两个部分,属性和实体之间的关系.
这是本文要讲解的数据模型

  • 一个员工隶属于一个部门
  • 一个部门有多个员工

属性(Attributes)

一个属性的截图

其中
属性分为很多种

  1. Optional 可选/必须

    很好理解,就是可选属性可以不设置,但是必须的属性就必须设置,否则在存储的时候会失败。这里要注意一点,可选属性不要设置默认值,因为会引起混淆。

  2. Transient 瞬态

    这个属性是很有用的,它的意义是除了不持久化到本地外,其他的与完全参与到对象图的管理中。这比临时变量好多了,因为支持undo,支持对象图管理

  3. Indexed索引

    和数据库的索引类似,索引能够大幅度提高查询速度,但是会增大表的大小,也会降低写入的速度。因为每次写入都要相应的更新索引

  4. Validation 验证

    可以进行一些简单的验证,例如图中对于字符串可以验证长度。以及String是否符合一个正则表达式。

更复杂的验证要重写KVC代理的方法(验证的例子来自于文档)
属性层次的验证,重写
-(BOOL)validate<Key>:(id *)ioValue error:(NSError **)outError
例如验证一个Age属性

-(BOOL)validateAge:(id *)ioValue error:(NSError **)outError {

    if (*ioValue == nil
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值