Swift CoreData,通过多对多关系保存数据

Posted

技术标签:

【中文标题】Swift CoreData,通过多对多关系保存数据【英文标题】:Swift CoreData, saving data via a many to many relationship 【发布时间】:2017-05-23 05:02:51 【问题描述】:

对任何人或所有人, 我正在寻求有关 Swift CoreData 某些功能的帮助,特别是在将数据保存到具有“多对多”关系的两个实体时。

我已经通过这个网站进行了搜索,并且还注册了三个不同的 uDemy 课程,但我正在努力使我用于教育的应用程序按设计工作。

我已经建立了关系…… ChildEntity - toParent 和ParentEntity - toChild……这两个都是“to Many”

我将数据保存到 CoreData 的功能只是保存子节点,而不是父节点,更具体地说,不是将父节点链接到子节点。

我知道关系 (toParent) 是 NSSet 类型,但显然,这是不可变的。我在控制台中没有收到任何错误。

我的印象是,您可以使用关系名称(即 toParent)保存数据并将数据链接到不同的实体,但同样难以了解父项的每个属性和值对是如何通过关系保存的。

@IBAction func saveChild(_ sender: UIBarButtonItem) 

let child = ChildEntity(context: moc)

    if let firstName = txtFirstNameChild.text 
        child.firstName = firstName
    

    if let lastName = txtLastNameChild.text 
        child.lastName = lastName
    

    child.toParent?.setValue(txtFirstNameMum.text!, forKey: "firstNameMum")
    child.toParent?.setValue(txtMobileMum.text!, forKey: “mobileMum")
    child.toParent?.setValue(txtFirstNameDad.text!, forKey: "firstNameDad”)
    child.toParent?.setValue(txtMobileDad.text!, forKey: “mobileDad”)

    ad.saveContext()

由于这是我的第一个在线问题,如果您需要更多信息来解释我的症结,请告诉我。谢谢

【问题讨论】:

【参考方案1】:

您需要创建父对象或将现有对象指定为父对象,它不会自动存在。

【讨论】:

就像创建一个表示 ParentEntiy 的 var?然后使用我需要保存到该实体中的信息更新该变量。 然后信息会通过关系链接吗? 是的,所以创建一个新的父级,或者找到一个现有的父级。然后将该父级设置为子级。不确定确切的 swift 语法,但在 obj-c 中应该是 [child addParentObject:parent];

以上是关于Swift CoreData,通过多对多关系保存数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过多对多关系获取 django 模型?

IOS/Core-Data:添加多对多关系

Swift、CoreData 和多对多关系:如何访问子项的顺序?

在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环

如何通过多对多关系获取与同一张表相关的行 - Laravel

如何使通过多对多关系连接的模型在 Django admin 中同时在两个地方可编辑?