【问题标题】:How can I attach an object with another object in CoreData using a one to many relationship?如何使用一对多关系将对象与 CoreData 中的另一个对象附加?
【发布时间】:2015-08-18 01:44:16
【问题描述】:

当我自己使用实体时,我非常擅长处理核心数据,但是自从我开始玩关系以来,我遇到了几堵墙,即使在尝试找到一个解决了很多天。为了简单起见,我有一个名为“EntityOne”的实体以及第二个“EntityTwo”实体。 EntityOne 与 EntityTwo 具有一对多的关系。基本上,我在保存到我的 managedObjectContext 时尝试将一个或多个 EntityTwo 对象附加到 EntityOne,而不是先保存 EntityOne,然后在获取结果后将 EntityTwo 对象附加到它。保存到持久存储时如何将它们连接在一起?

这是我对实体描述和 managedObjects 的声明。

let firstEntity = NSEntityDescription.entityForName("EntityOne", inManagedObjectContext: managedObjectContext!)
let firstItem = NSManagedObject(entity: firstEntity!, insertIntoManagedObjectContext: managedObjectContext!)

let secondEntity = NSEntityDescription.entityForName("EntityTwo", inManagedObjectContext: managedObjectContext!)
let secondItem = NSManagedObject(entity: secondEntity!, insertIntoManagedObjectContext: managedObjectContext!)

通常在不处理关系时,我会像这样保存对象:

    firstItem.attributeOne = titleTextField.text
    managedObjectContext?.save(&error)

firstItem.setValue("\(titleTextField.text)", forKey: "attributeOne"
managedObjectContext?.save(&error)

假设在同一个 viewController 上,我拥有为 EntityOne 创建一个对象以及一个或多个 EntityTwo 类型的对象附加到该 EntityOne 对象所需的所有数据,我将如何继续这样做?非常感谢所有提供帮助的人。干杯!

【问题讨论】:

  • 您已经尝试过什么将EntityTwoEntityOne 关联?你的模型是什么样的?
  • 好吧,既然 EntityOne 与 EntityTwo 的关系是 NSSet 类型,我想我必须创建一个数组,该数组由一个或多个 EntityTwo 对象组成,我想附加一个 EntityOne 对象并使用 firstItem 存储它.relationshipW/EntityTwo = [EntityTwo 对象数组]。由于某种原因,它不起作用。
  • 如果有任何帮助,我添加了图片。非常感谢!

标签: ios swift core-data


【解决方案1】:

“从另一个方向”设置关系更容易,因为它是一对一的:

secondItem.entityOne = firstItem

但这并不能真正回答您的问题。多对多关系表示为 NSSet,因此您可以使用:

firstItem.entityTwo = NSSet(object: secondItem)

firstItem.entityTwo = NSSet(array: [secondItem, thirdItem])

如果您从没有相关项目开始,但将项目添加到现有集合中,这很好:

var myRelatedItems : NSMutableSet = firstItem.mutableSetValueForKey("entityTwo")
myRelatedItems.addObject(secondItem)

【讨论】:

  • 感谢您的帮助,它就像一个魅力,我还想出了如何从存储在与 NSFethedResultsController 的 NSSet 关系中的数组中检索对象。
猜你喜欢
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 2011-04-15
相关资源
最近更新 更多