I'm trying to implement JSQMessageViewController with Firebase in Xcode (Swift).
I get an error: Cannot convert value of type 'JSQPhotoMediaItem?' to expected argument type 'String?' from this code below:
func observeMessages() {
messageRef.observe(.childAdded) { (snapshot) in
//print(snapshot.value)
if let dict = snapshot.value as? [String: AnyObject] {
let mediaType = dict["MediaType"] as! String
let senderId = dict["senderId"] as! String
let senderName = dict["senderName"] as! String
switch mediaType {
case "TEXT":
let text = dict["text"] as! String
self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, text: text))
case "PHOTO":
let fileUrl = dict["fileUrl"] as! String
let url = NSURL(string: fileUrl)
let data = NSData(contentsOf: url! as URL)
let picture = UIImage(data: data! as Data)
let photo = JSQPhotoMediaItem(image: picture)
self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, text: photo))
default:
print("unknown data type")
}
self.collectionView.reloadData()
}
}
}
You should change text
to media
in the initializer of JSQMessage
:
self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photo))
FYI, JSQMessagesViewController
is deprecated. See this blog post for more information.