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