Swift Core Data 多对多不保存

Swift Core Data many-to-many doesn't save

我有一个多对多的好友对话关系。我试着为这样的好友保存对话:

let conversations = buddy.valueForKeyPath("conversations") as? NSMutableSet
            conversations?.addObject(newConversation)
CoreData.sharedInstance.saveContext()

我的日志告诉我,好友有对话,但下次我 运行 应用程序时,好友没有对话,它创建了一个新对话。

我试过了

@NSManaged func addConversationObject(conversation: Conversation)

但是我每次都报错

我将其解释为基于两个不同的实体,好友和对话,其中一个好友可以在多个对话中,每个对话可以有多个好友参与。如果是这样,如果对话是新的,您将为其创建记录,并通过您为 link 他们定义的任何 属性 好友创建 link 好友(假设好友可能正在参与对话)。然后,要创建对话和 link 好友(例如 buddy1),您将使用:

guard let newConversation = NSEntityDescription.insertNewObject(forEntityName: "Conversation", into: context) as? Conversation else
{...damage control for the CoreData failure...}

buddy1.participatingIn = newConversation

此时,您还想设置对话记录中的任何其他值。另一方面,如果您要将 buddy1 添加到现有对话中,您将拥有或检索该对话(例如 conversation1)和 link buddy1 in with:

buddy1.participatingIn = conversation1

希望适合你的设计/有所帮助。