我正在尝试使用Xcode(Swift)中的Firebase实现JSQMessageViewController。
我收到一个错误:无法转换类型为“ JSQPhotoMediaItem”的值?以下代码中输入预期的参数类型“字符串?” :
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()
}
}
}
答案 0 :(得分:-1)
您应在text
的初始化程序中将media
更改为JSQMessage
:
self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photo))
仅供参考,JSQMessagesViewController
已被弃用。 See this blog post for more information.