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

祝你好運,讓我知道如果有更多我可以幫助你。

相關問題