无法转换类型为“ JSQPhotoMediaItem”的值?到预期的参数类型“字符串?”

时间:2018-11-18 13:20:22

标签: swift jsqmessagesviewcontroller

我正在尝试使用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()
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

您应在text的初始化程序中将media更改为JSQMessage

self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photo))

仅供参考,JSQMessagesViewController已被弃用See this blog post for more information.