我正在尝试制作一个聊天应用程序。我已经完成登录并完成了聊天界面的一部分,但是当我尝试使用功能collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData配置聊天时,它给我错误“无法将[JSQMessage]类型的返回表达式转换为JSQMessageData类型!”

这是我的MessagesViewController代码:

import UIKit
import JSQMessagesViewController
import Firebase



class MessagesViewController: JSQMessagesViewController {




override func collectionView(collectionView: JSQMessagesCollectionView!,
                             messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! {
    return message[indexPath.item].userMessages
}

override func collectionView(collectionView: UICollectionView,
                             numberOfItemsInSection section: Int) -> Int {
    return message.count
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.hidesBackButton = false

    // Do any additional setup after loading the view.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

}


这是我的自定义类消息的代码:

import Foundation
import JSQMessagesViewController
import Firebase

class Messages {

dynamic var user = FIRAuth.auth()?.currentUser?.uid

dynamic var addedUsers = [String]()

dynamic var userMessages = [JSQMessage]()

dynamic var messageDates = [NSDate]()

}


数组消息为var message = [Messages]()

我的错误是什么,谢谢。

最佳答案

问题是您尝试传递JSQMessages,如果使用JSQMessages而不是自定义类Messages,则可以这样做,但是如果要在消息对象上跟踪更多变量,则可能需要您的自定义实现。

您只需要使您的Messages类符合JSQMessageData协议。 JSQMessages已经符合此要求,这就是它们起作用的原因。我已经在另一个stackoverflow问题中概述了我之前的操作方法,如果遇到问题,可以将其称为指南。 Argument labels do not match any available overloads

祝您好运,如果有更多需要帮助的地方,请告诉我。 👻

09-11 01:13