Swift核心数据多对多并不能保存

时间:2016-09-07 09:26:17

标签: swift xcode core-data many-to-many

我与好友交谈有多对多的关系。我试图为这样的伙伴保存一个对话:

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

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

我试过这个

@NSManaged func addConversationObject(conversation: Conversation)

但我每次都会收到错误

1 个答案:

答案 0 :(得分:0)

我将此解释为基于两个不同的实体,好友和对话,其中好友可以进行多个对话,每个对话可以有多个好友参与。如果是,如果对话是新的,您可以为其创建记录,并通过您定义的任何属性链接好友以链接他们(让我们说好友可以参与其中)会话)。然后,要创建对话并链接伙伴(比如buddy1),您将使用:

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

buddy1.participatingIn = newConversation

此时,您还想在对话记录中设置您拥有的任何其他值。另一方面,如果您要将buddy1添加到现有会话中,您就拥有或检索该会话(比如session1)并将buddy1链接到:

buddy1.participatingIn = conversation1

我希望这符合您的设计/帮助。