This commit is contained in:
Erik 2015-02-03 10:05:47 -05:00
parent 232c22789a
commit 8ff8c88a48
3 changed files with 26 additions and 18 deletions

View File

@ -81,15 +81,19 @@ socket.on("jsonTest") {data in
// Messages that have multiple items are passed // Messages that have multiple items are passed
// by an array // by an array
socket.onMultipleItems("multipleItems") {data in socket.onMultipleItems("multipleItems") {data in
if let str = data[0] as? String { if data == nil {
return
}
if let str = data![0] as? String {
println(str) println(str)
} }
if let arr = data[1] as? [Int] { if let arr = data![1] as? [Int] {
println(arr) println(arr)
} }
if let obj = data[4] as? NSDictionary { if let obj = data![4] as? NSDictionary {
println(obj["test"]) println(obj["test"])
} }
} }

View File

@ -24,8 +24,8 @@
class SocketEventHandler { class SocketEventHandler {
let event:String! let event:String!
let callback:NormalCallback! let callback:NormalCallback?
let callbackMult:MultipleCallback! let callbackMult:MultipleCallback?
init(event:String, callback:NormalCallback) { init(event:String, callback:NormalCallback) {
self.event = event self.event = event
@ -37,11 +37,19 @@ class SocketEventHandler {
self.callbackMult = callback self.callbackMult = callback
} }
func executeCallback(item:AnyObject?) { func executeCallback(item:AnyObject?, multiple:Bool) {
callback(item) if callback == nil || multiple {
if item != nil && item is NSArray {
callbackMult?(item as? NSArray)
} else {
if item != nil {
callbackMult?([item!])
} else {
callbackMult?(nil)
}
}
} else {
callback?(item)
} }
func executeCallback(items:[AnyObject]) {
callbackMult(items)
} }
} }

View File

@ -25,7 +25,7 @@
import Foundation import Foundation
typealias NormalCallback = (AnyObject?) -> Void typealias NormalCallback = (AnyObject?) -> Void
typealias MultipleCallback = (AnyObject...) -> Void typealias MultipleCallback = (NSArray?) -> Void
class SocketIOClient: NSObject, SRWebSocketDelegate { class SocketIOClient: NSObject, SRWebSocketDelegate {
let socketURL:String! let socketURL:String!
@ -188,12 +188,8 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
// println("Should do event: \(event) with data: \(data)") // println("Should do event: \(event) with data: \(data)")
for handler in self.handlers { for handler in self.handlers {
if handler.event == event && !multipleItems { if handler.event == event {
handler.executeCallback(data) handler.executeCallback(data, multiple: multipleItems)
} else if handler.event == event && multipleItems {
if let arr = data as? [AnyObject] {
handler.executeCallback(arr)
}
} }
} }
} }