在Swift中使用超类的值

时间:2017-09-11 09:06:10

标签: swift signalr instance

我正在尝试编写聊天应用程序,我正在使用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)
     }

1 个答案:

答案 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
}