无法将 SINMessage 类型的值转换为 ChatMessage (Swift)

Could not cast value of type SINMessage to ChatMessage (Swift)

目前正在尝试将 Sinch SDK 桥接到我的 Swift 应用程序中,我 运行 遇到以下错误:

"Could not cast value of type '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 然后被传递到位于我的一个视图控制器中的以下函数

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)

有关更多信息,这里是我也尝试投射的 swift class "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
}

(注意,"Import Sinch" 不需要在上面列出的 "ChatMessage" class 中,因为我在 Bridging-Header 中有它)

所以,我 missing/doing 哪里错了?

你应该使用 SINOutgoing 而不是 sinMessage,你不需要自己实现 sinmessage 协议。

编辑:

因此,与其尝试解析 notificationm 传递推送到 sinch 客户端并对传入消息做出反应,

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

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

好的...

经过几天的测试变通办法,我找到了解决方案。 问题似乎是,就像博纳德建议的那样,"SIN" 类型不符合 "ChatMessage" class.

的要求

因此,我没有尝试通过 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" class!

感谢所有提供帮助的人。