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,通过多对多关系保存数据的主要内容,如果未能解决你的问题,请参考以下文章
Swift、CoreData 和多对多关系:如何访问子项的顺序?
在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环