swift coredata relationship

coredata relationship 开发过程有很多细节需要大家注意。稍有不慎就会困在某个地方无法动弹。

  1. 创建Entity  ContactsDetail(成员)和 ContactsGroup(组)
  2. ContactsDetail添加属性,并设置属性value类型
  3. ContactsGroup添加属性,并设置属性value类型
  4. ContactsDetail添加relationship,起名字。并Destination为ContactsGroup,Inverse选定为detail。Delete Rule设定为Nullify(无效)
  5. ContactsGroup,添加relationship。起名字。并Destination为ContactsDetail,Inverse选定为contactsGroup。Delete Rule设定为Cascade(串联)
  6. 生成所需文件(.h   .m )完成前期准备工作

开始代码

**********************************调用方法**********************************

获取所有组

controlListArray = DataBaseClass.DBContactsGroupReadAllData()

插入一个组

DataBaseClass.DBContactsGroupInsert(["name":input!])

删除一个组

let group = controlListArray![indexPath.row] as ContactsGroup

DataBaseClass.DBContactsGroupDeleteObject(group)

获取指定组中所有成员(要把组实体对象传入)

controlListArray = DataBaseClass.DBContactsDetailReadAllData(currentGroup!)

指定组中创建一个成员

DataBaseClass.DBContactsDetailInsert(group!, dataDic: ["name":"张三", "sex":"男", "age":"18"])

删除指定组中某个成员

let detailData = controlListArray![indexPath.row] as ContactsDetail

DataBaseClass.DBContactsDetailDeleteObject(detailData)

细节备注

  1. 创建关系时,选择Inverse可能会没有值.要把两个实体的关系全部创建并命名,然后就可以分别选择了
  2. 删除组,成员却没有从“数据库”中删除。组关系的Delete Rule一定要选择Cascade(就是 串联起来,串联删除)

效果图参考

时间: 2024-10-10 01:53:27

swift coredata relationship的相关文章

Swift CoreData 的奇怪问题

今天尝试了一下Swift CoreData 遇到一个很奇怪的问题: 当运行项目的时候, 会提示, 找不到与实体对应的class 文件,但在实体中,文件确实是创建过的,也实际存在 运行到这个地方, xcode不会死掉,当点击"step over"的时候, 会继续执行 当我要输出 取到的结果时, 又会提示:NSArray element failed to match the swift array element type 怎么调试都无法通过, 后来经过查找资料才知道,需要在与实体对应的

Step by Step Do IOS Swift CoreData Simple Demo

简单介绍 这篇文章记录了在 IOS 中使用 Swift 操作 CoreData 的一些基础性内容,因为缺乏文档,基本上都是自行实验的结果.错漏不可避免,还请谅解. 部分内容借鉴了 Tim Roadley 的<Learning.Core.Data.for.iOS(2013.11)>, 这本书主要介绍 ObjC的 CoreData . 创建一个新 XCode 项目 创建一个新的 XCode 项目. 创建一个 Empty Application 填写项目相关信息,如设置项目名称为: SwiftCor

swift coredata

接触swift有段时间,搞定通讯.数据库基本上已经够普通开发使用. coredata一直是官方推荐使用的数据存储方式,以下即为普通数据存储方式及代码 1.首先要勾选工程中使用coredata数据存储方式,系统会自动生成所需相关代码 2.创建实体(Entity).属性(Attributes)并选择属性的数据类型 对比来说,实体=表(首字母必须大些),属性=字段,并且指定字段类型 (首字符必须小写),如命名不规范,xcode会自动警告提示 属性数据类型多种(Int.Double.String.Dat

swift CoreData中CoreData: warning: Unable to load class named问题

问题 用swift创建CoreData项目时,操作CoreData Modal时,出现下面错误 CoreData: warning: Unable to load class named 'Book' for entity 'Book'. Class not found, using default NSManagedObject instead. 解决办法 1. 在book.swift 中添加 @objc(Book) 2. 修改CoreData模板 /Applications/Xcode.ap

iOS CoreData relationship 中的inverse

官方文档建议为每一个可以设置inverse的relationship设置一个inverse.目的是保持数据库的正确性.但是没有具体的说明. 我在stackoverflow中找到了一个是分好的答案,http://stackoverflow.com/questions/764125/does-every-core-data-relationship-have-to-have-an-inverse 内容如下: Apple documentation has an great example that

swift coredata NSFetchedResultsController 构建分区表

NSFetchedResultsController  一个较实用的查询类,很简单的实现分区展示.删除等功能 1.创建 tableview 和  NSFetchedResultsController 对象(fetchController) 2.用fetchController对象去查询表:必须绑定一个  NSFetchRequest(设定查询表),必须绑定排序描述符 NSSortDescriptor 并且指定排序字段.然后执行查询 3.调用表协议方法,并穿插fetchController来获取各

Swift CoreData 增删改查

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #ffffff; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0

iOS CoreData 增删改查详解

最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴.目前开发使用的Swift语言开发的项目.所以整理出来的是Swift版本,OC我就放弃了. 虽然Swift3 已经有了,目前整理的这个版本是Swift2 的.Swift 3 的话有些新特性. 需要另外调整,后续有时间再整理. 继承CoreData有两种方式: 创建项目时集成 这种方式是自动继承在AppDelegate里面,调用的使用需要通过UIApplication的方式来获取AppDelega

SWIFT 之CoreData初试

SWIFT中使用CoreData来保存本地数据,在建立项目的时候把 "Use Core Data"选项选上 项目建立完成后点击后缀为 .xcdatamodeld的那个文件,点击右下角"Add Entity"添加一个Entity后可以修改其名称,接着在"Attributes"下面点击“+”号添加一个 Attribute 接着就可以上代码操作了,首先先添加引用 import CoreData //It's necessary to code thes