coredata relationship 开发过程有很多细节需要大家注意。稍有不慎就会困在某个地方无法动弹。
- 创建Entity ContactsDetail(成员)和 ContactsGroup(组)
- ContactsDetail添加属性,并设置属性value类型
- ContactsGroup添加属性,并设置属性value类型
- ContactsDetail添加relationship,起名字。并Destination为ContactsGroup,Inverse选定为detail。Delete Rule设定为Nullify(无效)
- ContactsGroup,添加relationship。起名字。并Destination为ContactsDetail,Inverse选定为contactsGroup。Delete Rule设定为Cascade(串联)
- 生成所需文件(.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)
细节备注
- 创建关系时,选择Inverse可能会没有值.要把两个实体的关系全部创建并命名,然后就可以分别选择了
- 删除组,成员却没有从“数据库”中删除。组关系的Delete Rule一定要选择Cascade(就是 串联起来,串联删除)
效果图参考