我有很多一对多的好友对话关系。我尝试将对话保存为这样的好友:

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


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

我试过了

@NSManaged func addConversationObject(conversation: Conversation)


但是我每次都会出错

最佳答案

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

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

buddy1.participatingIn = newConversation


那时,您还想设置“对话”记录中的其他任何值。另一方面,如果要将buddy1添加到现有对话中,则可以拥有或检索该对话(例如,conversation1),并将buddy1与以下链接:

buddy1.participatingIn = conversation1


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

10-05 20:02