0

我正在尝试创建一个聊天应用程序。我有登录和聊天界面的一部分完成,但是当我尝试使用函数collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData配置聊天时,它给了我错误'无法将类型[JSQMessage]的返回表达式转换为键入JSQMessageData!'Swift 2.2,Firebase,JSQMessagesViewController - 无法将[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]()

什么是我的错误,先谢谢你。

+0

我认为应该是它应该返回消息[indexPath.item] –

回答

0

对不起,我自己解决了。我尝试了一下,发现我不得不放置'messages [indexPath.item] .userMessages [index Path.item]'。我意识到我需要给每个单独的消息而不是数组。感谢所有帮助!

0

的问题是,你正在试图通过JSQMessages它,如果你使用JSQMessages,而不是你的自定义类Messages的,但如果你有,你想跟踪您的邮件对象上更多的变量,那么你可能需要你,你可以做自定义实现。

全部您需要让您的Messages类符合JSQMessageData协议。 JSQMessages已经符合这个,这就是他们工作的原因。我已经概述了如何在之前的另一个stackoverflow问题中进行此操作,如果遇到问题,可以参考它作为指南。 Argument labels do not match any available overloads

祝你好运,让我知道如果有更多我可以帮助你。

相关问题