Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “保存到核心数据”;ALL或ANY运算符的左侧必须是NSArray或NSSet_Ios_Swift_Sqlite - Fatal编程技术网

Ios “保存到核心数据”;ALL或ANY运算符的左侧必须是NSArray或NSSet

Ios “保存到核心数据”;ALL或ANY运算符的左侧必须是NSArray或NSSet,ios,swift,sqlite,Ios,Swift,Sqlite,当我试图保存与核心数据的关系时,它会在标题中抛出上述错误。我基本上是创建一个消息应用程序和数据模型是附加的。当试图保存到其他关系时,这也是同样的事情。我可以一次保存所有数据模型,还是应该一次保存一个,然后在使用常规属性保存模型后返回并添加关系** 它在“newconva.addMessage(消息:newMessage)”行失败 错误消息 ALL或ANY运算符的左侧必须是NSArray或NSSet 很明显: 您将消息声明为对一关系消息 方法addMessage的发送者必须是对多关系Set

当我试图保存与核心数据的关系时,它会在标题中抛出上述错误。我基本上是创建一个消息应用程序和数据模型是附加的。当试图保存到其他关系时,这也是同样的事情。我可以一次保存所有数据模型,还是应该一次保存一个,然后在使用常规属性保存模型后返回并添加关系**

它在“newconva.addMessage(消息:newMessage)”行失败

错误消息

ALL或ANY运算符的左侧必须是NSArray或NSSet

很明显:

  • 您将
    消息
    声明为对一关系
    消息

  • 方法
    addMessage
    的发送者必须是对多关系
    Set

    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
}
    @NSManaged public var messages: Message?

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