• 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(就是 串联起来,串联删除)

    效果图参考

  • 相关阅读:
    navicat连接mysql报错1251解决方案
    ubuntu 安装nodejs/npm
    sync-settings(vscode)
    ubuntu远程桌面连接windows系统
    three.js中点生成矩阵方法
    threeJs中旋转位移等操作坐标系
    ubuntu查看进程端口号及运行的程序
    Ubuntu终端远程连接linux服务器
    THREE.OrbitControls参数控制
    canvas设置长宽
  • 原文地址:https://www.cnblogs.com/madaha/p/4204217.html
Copyright © 2020-2023  润新知