2017-09-11 4 views
0

私はチャットアプリケーションを作成しようとしています。私はこのためにSignalRを使用しています。私は最近、SignalR/SwiftR関数のハンドラを使用するコードをリファクタリングし始めました。チャットのviewControllerからSignalRハンドラを呼び出すと、インスタンスを作成しています。今私は、ハンドラインスタンス内でトリガされ、そこからviewControllerで関数を実行しようとしている関数があります。私はインスタンスでこれをやろうとしました。しかし、私はクラスの新しいインスタンスを作成しているので、私はarrayMessageにデータを持っていません。通常のクラスの配列を取得する方法はありますか?Swiftのインスタンスでスーパークラスの値を使用

そうでない場合、この機能を実行するにはどうすればよいでしょうか?私はarrayMessage内のデータを持っていない

​​3210

recieveMessage機能、::

これはrecieveMessage実行する必要があり、あなたのchathub、コールバックで

 func recieveMessage(m : AnyObject){ 
     let message = m.object(forKey: "Message") as! String 
     let index = (self.arrayMessage.count - 1) 
     print(self.arrayMessage) 
    } 
+0

VCの権利以外のどこかから? デリゲートパターンを使用することは可能でしょうか? – TMob

+0

はい、そうです。私はデリゲートを使用することを考えましたが、まだそれらを理解していないので、インスタンスで作業することを望んでいました –

+0

最初のコードブロックはどこで実行しますか?通常は、 VCからデリゲートとして渡されるサービスクラス。これが機能しない場合、たとえばアプリケーションの起動時にコールバックを一度定義すると、通知を使用することができます – TMob

答えて

1

をあなたはとの通知を投稿することができますメッセージが添付されています

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ChatHubMessageReceived"), object: m) 

ViewControllerでyメッセージに私たち自身

NotificationCenter.default.addObserver(self, 
             selector: #selector(receiveMessage), 
             name: NSNotification.Name(rawValue: "ChatHubMessageReceived"), 
             object: nil) 

あなたは通知を取るものにメソッドシグネチャを調整する必要があります私が正しくあなたを理解していれば、あなたのVC上のコールバック関数「receiveMessage」を呼びたい

func recieveMessage(notification: Notification) { 
    let message = notification.object 
} 
関連する問題