2015-12-24 48 views
-1

目前正試圖彌合Sinch SDK到我斯威夫特的應用程序,我遇到下列錯誤運行:無法投類型SINMessage的價值ChatMessage(SWIFT)

「無法投型的「價值SINMessageRebRTCImpl 「 「爲 'ChatMessage'」

1)類型SINMessageRebTyCImpl是在位於AppDelegate.swift文件下面的函數創建的:

func messageSent(message: SINMessage, recipientId: String) { 
    self.saveMessagesOnParse(message) 
**NSNotificationCenter.defaultCenter().postNotificationName(SINCH_MESSAGE_SENT, object: self, userInfo: ["message": message])** } 

2)SINMessageRebTyCImpl然後被傳遞到位於我的viewcontrollers

func messageDelievered(notification: NSNotification){ 
let chatMessage: ChatMessage = (notification.userInfo["message"] as! ChatMessage) 
self.messageArray.append(chatMessage) 
} 

3)然後,將代碼崩潰在上面的代碼中的第二行中的一個的以下功能。

let chatMessage: ChatMessage = (notification.userInfo["message"] as! ChatMessage) 

欲瞭解更多信息,這裏是迅速類「ChatMessage」我試圖投過的代碼。

Import UIKit 
Import Foundation 

class ChatMessage: NSObject, SINMessage { 
    var messageId: String 
    var recipientIds: [AnyObject] 
    var senderId: String 
    var text: String 
    var headers: [NSObject : AnyObject] 
    var timestamp: NSDate 
} 

(請注意,「導入Sinch」並不需要在上面列出的「ChatMessage」類,因爲我有它在分接頭)

所以,我失去了什麼/做錯了?

+0

該課程是什麼樣子,如果您仍然需要幫助,請張貼該課程的代碼 – bolnad

+0

這是第二個代碼塊。 :) – user5208470

+0

對不起,當我問這個問題時,我正在尋找這個類:SINMessageRebRTCImpl。這是它的抱怨,所以想看看那是什麼做的 – bolnad

回答

0

好了...

所以經過幾天的測試變通方法後,我找到了我的解決方案。 問題似乎是這樣的,就像bolnad所建議的那樣,「SIN」類型不符合「ChatMessage」類的要求。

因此,而不是試圖通過一個NSNotification變量整個數組,我把它弄壞了如下並將它們設置爲NSDefaults

let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()  
    chatMessage.senderId = prefs.valueForKey("SENDERID") as! String 
    chatMessage.text = prefs.valueForKey("TEXT") as! String 
    chatMessage.messageId = prefs.valueForKey("MESSAGEID") as! String 
    chatMessage.timestamp = prefs.valueForKey("TIMESTAMP") as! NSDate 
    chatMessage.recipientIds = prefs.valueForKey("RECIPIENTID") as! [AnyObject]! 
    self.messageArray.append(chatMessage) 
    self.historicalMessagesTableView.reloadData() 
    self.scrollTableToBottom() 

這樣做,我能滿足「ChatMessage」班級沒有問題!

感謝大家的幫助。

0

你應該使用SINOutgoing而不是sinMessage,你不需要自己實現sinmessage協議。

編輯:

因此,而不是試圖將notificationm通推解析到sinch客戶ADN反應傳入消息,

id<SINClient> client; // get previously created client 
[client relayRemotePushNotification:userInfo]; 

https://www.sinch.com/docs/instant-message/ios/#localandremotepushnotifications

+0

只是測試了這一點,似乎並沒有一個「SINOutgoing」,我可以放在課堂上。你能稍微描述一下嗎? – user5208470

+0

雖然我只是意識到它是你的github,我正試圖在我的快速應用中實現,但仍然無法準確解決你的建議。我已經更新了這個問題,以提供更多關於我正在嘗試做的事情的背景。也許你可以再看看我的問題。謝謝 – user5208470

相關問題