我正在尝试编写聊天应用程序,我正在使用SignalR。我最近开始重构代码以使用SignalR / SwiftR函数的处理程序。当我从聊天viewController调用SignalR处理程序时,我正在创建一个实例。现在我有一个函数,它在处理程序实例中触发,从那里我试图在viewController中执行一个函数。我尝试用一个实例来做这件事。但是现在我的arrayMessage中没有任何数据,因为我正在创建一个新的类实例。有没有办法获得普通类的数组?
如果没有,那么执行此功能的最佳方式是什么?
这应该执行recieveMessage:
chatHub.on("CommunityMessage") { args in
if let m: AnyObject = args![0] as AnyObject!{
SignalRViewController.instance.recieveMessage(m: m)
}
}
recieveMessage函数,我在arrayMessage中没有数据:
func recieveMessage(m : AnyObject){
let message = m.object(forKey: "Message") as! String
let index = (self.arrayMessage.count - 1)
print(self.arrayMessage)
}
答案 0 :(得分:1)
在您的chathub-callback中,您可以发布附有消息的通知
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ChatHubMessageReceived"), object: m)
在ViewController中,您可以自己订阅消息
NotificationCenter.default.addObserver(self,
selector: #selector(receiveMessage),
name: NSNotification.Name(rawValue: "ChatHubMessageReceived"),
object: nil)
您必须将方法签名调整为接收通知的签名
func recieveMessage(notification: Notification) {
let message = notification.object
}