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
// by an array
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)
}
if let arr = data[1] as? [Int] {
if let arr = data![1] as? [Int] {
println(arr)
}
if let obj = data[4] as? NSDictionary {
if let obj = data![4] as? NSDictionary {
println(obj["test"])
}
}

View File

@ -24,8 +24,8 @@
class SocketEventHandler {
let event:String!
let callback:NormalCallback!
let callbackMult:MultipleCallback!
let callback:NormalCallback?
let callbackMult:MultipleCallback?
init(event:String, callback:NormalCallback) {
self.event = event
@ -37,11 +37,19 @@ class SocketEventHandler {
self.callbackMult = callback
}
func executeCallback(item:AnyObject?) {
callback(item)
}
func executeCallback(items:[AnyObject]) {
callbackMult(items)
func executeCallback(item:AnyObject?, multiple:Bool) {
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)
}
}
}

View File

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