2017-08-05 2 views
3

コアデータとの関係を保存しようとすると、上記のエラーがタイトルにスローされます。メッセージングアプリケーションとデータモデルが添付されていますこれは他の関係にも保存しようとしているときにも同じことをしています。 。**モデルはその通常の属性と一緒に保存された後Data Model Visualコアデータへの保存 "ALLまたはANY演算子の左側はNSArrayまたはNSSetのいずれかでなければなりません

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 
} 

それはライン "newConvo.addMessage(メッセージ:newMessage)" に失敗し

@NSManaged public var messages: Message? 

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

答えて

0

ALLまたはANY演算子の左辺はNSArrayのかNSSet

のいずれかでなければなりませんエラーメッセージ

はかなり明確です:

  • あなたが宣言messagesとしてとなり、の関係Messageとなる。

  • 方法addMessageの送信者は、対多の関係

でなければなりません
関連する問題