diff --git a/SwiftIO/SocketEventHandler.swift b/SwiftIO/SocketEventHandler.swift index c3f4a57..9583713 100644 --- a/SwiftIO/SocketEventHandler.swift +++ b/SwiftIO/SocketEventHandler.swift @@ -26,6 +26,7 @@ class SocketEventHandler { let event:String! let callback:NormalCallback? let callbackMult:MultipleCallback? + var multiEvent = false init(event:String, callback:NormalCallback) { self.event = event @@ -35,18 +36,17 @@ class SocketEventHandler { init(event:String, callback:MultipleCallback) { self.event = event self.callbackMult = callback + self.multiEvent = true } - func executeCallback(item:AnyObject?, multiple:Bool) { - if callback == nil || multiple { - if item != nil && item is NSArray { - callbackMult?(item as? NSArray) + func executeCallback(item:AnyObject?, items:NSArray? = nil) { + if self.multiEvent { + if items != nil { + callbackMult?(items) + } else if item != nil { + callbackMult?([item!]) } else { - if item != nil { - callbackMult?([item!]) - } else { - callbackMult?(nil) - } + callbackMult?(nil) } } else { callback?(item) diff --git a/SwiftIO/SocketIOClient.swift b/SwiftIO/SocketIOClient.swift index cc88dcf..d1a20df 100644 --- a/SwiftIO/SocketIOClient.swift +++ b/SwiftIO/SocketIOClient.swift @@ -189,7 +189,11 @@ class SocketIOClient: NSObject, SRWebSocketDelegate { for handler in self.handlers { if handler.event == event { - handler.executeCallback(data, multiple: multipleItems) + if data is NSArray { + handler.executeCallback(nil, items: (data as NSArray)) + } else { + handler.executeCallback(data) + } } } }