2016-08-10 7 views
0

使用可能な任意の過負荷を一致していない、と私は(displayNameを、このようなsenderIDtextとしてデフォルト値と一緒に、と)それぞれのメッセージを持つ別の変数、整数scoreを関連付けます。これは、私はこれを実装しようとする方法:私は次のエラーメッセージ取得していますが引数ラベルは、私がJSQMessagesViewControllerを使用して、メッセージングアプリに取り組んでいます

func addMessage(id: String, text: String, displayName: String, score: Int) { 

    // Make sure the character count is between 10 and 140, then add message to message list to display 
    if (text.characters.count <= 10 || text.characters.count >= 140) { 

    } 
    else { 
     let message = JSQMessage(senderId: id, displayName: displayName, text: text, score: score) 
     messages.append(message) 
    } 

} 

を:

Argument labels '(senderId:, displayName:, text:, score:)' do not match any available overloads

を私はいくつかの事前設定の定義として存在しているためであると仮定することができますJSQMessageオブジェクトが保持できるデータには、メッセージに追加の変数を関連付けるためにオーバーライドする方法が不明です。

注:私は直接、余分な変数を追加する(JSQMessage.hJSQMessage.mファイル内)JSQMessagesViewControllerフレームワーク自体にコードを変更しようとしましたが、これはちょうどより多くのエラーが発生すると、私は混乱何かアップだろうかと思います。

すべてのソリューションはありますか?

ありがとうございます。

EDIT

は、私はそれを行う方法を考え出したと思います! `輸入のUIKit インポートJSQMessagesViewController

クラスCUSTOMMESSAGE:JSQMessage { するvarスコア:のInt

init(senderId:String, displayName:String, text:String, score:Int) { 
    self.score = score 
    super.init(senderId:senderId, displayName:displayName, text:text) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

}`しかし

私は今のようなsuper.init後にエラーを取得しています:must call a designated initializer of the superclass 'JSQMessage'

答えて

6

JSQMessageオブジェクトをサブクラス化し、余分な変数をサブクラス化されたオブジェクトに追加するだけです。 それからそれはすべての同じ方法に従います。

編集:私はあなたがミスリードを持っている可能性があるように見えます

、ドキュメントがJSQMessageDataプロトコルに準拠するように指示。私は、あなたはまだそれを他の方法で行うことができますが、プロトコルが移動するための方法です

}この

class Message: NSObject, JSQMessageData { 
var text_: String? 
var senderId_: String? 
var date_: NSDate? 
var senderDisplayName_: String? 
var isMediaMessage: Bool? 
var score: Int?    ***** Here is your new Variable 

init(text: String?, senderId: String?, senderDisplayName: String?, score: Int?, date: NSDate) { 
    self.text_ = text 
    self.senderId_ = senderId 
    self.isOutBound_ = isOutBound 
    self.date_ = date 
    self.senderDisplayName_ = senderDisplayName 
    self.score_ = score  ***** 
} 

func text() -> String? { 
    return text_ 
} 
func score() -> Int? {  ***** 
    return score_ 
} 

func senderId() -> String? { 
    return senderId_ 
} 

func date() -> NSDate? { 
    return date_ 
} 

func senderDisplayName() -> String? { 
    return senderDisplayName_ 
} 

func isMediaMessage() -> Bool { 
    return isMediaMessage_ 
} 

func messageHash() -> UInt { 
    return UInt(self.hash) 
} 

のようにそれをやりました。

私はそれが私がちょうどあなたをもっと混乱させたかもしれないかどうかを教えてください:)しかし、私は試して明確にします。幸運

+0

私は私の質問にした編集をチェックアウトできますか?私はほとんどそれを持っていると思う、私はちょうど小さなエラーを取得しています。あなたが素晴らしい方法で素晴らしい助けをありがとう! –

+0

ちょうどあなたが私の編集を見て、それが助けられたかどうかをチェックしています。 –

+0

編集ありがとう –

関連する問題