Saving Master Data "The left side of an ALL or ANY statement must be either NSArray or NSSet

When I try to keep the master data link, it throws the above error in the header. I am mainly building a messaging application and data model. It does the same thing, trying to maintain other relationships as well. Can I save all my data models at once or should I save them in one go and then go back and add relationships after saving the model with its regular attributes. ** Visual Data Model

    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 doesn't work on the line "newConvo.addMessage (message: newMessage)"

    @NSManaged public var messages: Message?

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

      

+3


source to share


1 answer


Error message

The left side of an ALL or ANY operator must be either NSArray or NSSet



pretty clear:

  • You have declared messages

    as to-one Message

    .

  • The method sender addMessage

    must be a many- relation Set<Message>

0


source







All Articles