Saving to Core Data "The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet

Viewed 532

When I try to save a relationship to core data it throws the above error in the title. I'm basically creating a messaging app and data model is attached. This is doing the same thing when trying to save to other relationships too. Can I save all of my data models at once or should I save one at a time and then go back and add the relationships after the model has been saved with its regular attributes. **Data Model Visual

    static func save(sender: UserCD, message: String) -> Conversation? {

    let convo: Conversation? = nil

    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return convo
    }

    if #available(iOS 10.0, *) {

        let context = appDelegate.persistentContainer.viewContext

        let now = Date()

        let messageEntity = NSEntityDescription.entity(forEntityName: "Message", in: context)
        let newMessage = NSManagedObject(entity: messageEntity!, insertInto: context) as! Message

        let conversationEntity = NSEntityDescription.entity(forEntityName: "Conversation", in: context)
        let newConvo = NSManagedObject(entity: conversationEntity!, insertInto: context) as! Conversation

        newMessage.setValue(UUID().uuidString, forKey: "messageId")
        newMessage.setValue(message, forKey: "text")
        newMessage.setValue(now, forKey: "timestamp")
        newMessage.setValue(sender, forKey: "sender")

        newConvo.setValue(UUID().uuidString, forKey: "conversationId")
        newConvo.setValue(now, forKey: "startDate")
        newConvo.setValue(now, forKey: "lastMessageDate")
        newConvo.addMessage(message: newMessage)

        sender.addMessage(message: newMessage)
        sender.addConversation(conversation: newConvo)

        do {
            try newMessage.managedObjectContext?.save()
            try sender.managedObjectContext?.save()
            try newConvo.managedObjectContext?.save()

            return newConvo

        } catch {
            let saveError = error as NSError
            print("Failed to save conversastion: \(saveError.debugDescription)")
        }
    }
    return convo
}

It fails on line "newConvo.addMessage(message: newMessage)"

    @NSManaged public var messages: Message?

func addMessage(message: Message) {
    let messages = self.mutableSetValue(forKey: "messages")
    messages.add(message)
}
1 Answers
Related