Не удается преобразовать значение типа 'JSQPhotoMediaItem?' к ожидаемому типу аргумента 'String?' - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь реализовать JSQMessageViewController с Firebase в XCode (Swift).

Я получаю ошибку: Невозможно преобразовать значение типа '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()
        }
    }
}

1 Ответ

0 голосов
/ 18 ноября 2018

Вы должны изменить text на media в инициализаторе JSQMessage:

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

К вашему сведению, JSQMessagesViewController является устарело . См. Этот блог для получения дополнительной информации.

...