【问题标题】:Cannot convert value of type 'JSQPhotoMediaItem?' to expected argument type 'String?'无法转换 'JSQPhotoMediaItem?' 类型的值?到预期的参数类型“字符串?”
【发布时间】:2018-11-18 13:20:22
【问题描述】:

我正在尝试在 Xcode (Swift) 中使用 Firebase 实现 JSQMessageViewController。

我收到一个错误:无法转换“JSQPhotoMediaItem”类型的值?从下面的代码到预期的参数类型'String?'

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()
        }
    }
}

【问题讨论】:

标签: swift jsqmessagesviewcontroller


【解决方案1】:

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

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

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

【讨论】:

  • 好的,谢谢!它解决了问题,对 JSQMessagesViewController 新闻的想法太糟糕了:(
猜你喜欢
  • 2021-09-18
  • 2019-12-24
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
相关资源
最近更新 更多