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

申し訳ありませんが、私はそれを自分で解決しました。私は実験して、メッセージ[indexPath.item] .userMessages [index Path.item]を入れなければならないことを発見しました。私は、配列の代わりにすべての単一のメッセージを関数に渡す必要があることに気付きました。助けてくれてありがとう!

0

問題は、あなたがあなたのカスタムクラスMessagesの代わりにJSQMessagesを使用しますが、あなたがあなたのメッセージオブジェクト上のトラックを維持したいより多くの変数を持っている場合、あなたはあなたを必要とする可能性がある場合、あなたが行うことができますJSQMessagesに合格しようとしているということですカスタム実装。

すべてクラスは、JSQMessageDataプロトコルに準拠する必要があります。 JSQMessagesはすでにこれに準拠しているため、彼らは働いています。私はあなたが立ち往生した場合は、ガイドとして参照することができます別のstackoverflowの質問でこれを以前に行う方法の概要を説明しました。 Argument labels do not match any available overloads

運が良ければもっと私に教えてください。私はあなたを助けることができます。

関連する問題