From 51ee4d3d1d95a6c7a31ac98fcfbb4b722aedcc33 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 22 May 2016 14:05:01 -0400 Subject: [PATCH] try and avoid a bunch of as AnyObject nonsense --- Source/SocketIOClient.swift | 8 ++++---- Source/SocketIOClientSpec.swift | 4 ++++ Source/SocketTypes.swift | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Source/SocketIOClient.swift b/Source/SocketIOClient.swift index 9f2503b..5c8c380 100644 --- a/Source/SocketIOClient.swift +++ b/Source/SocketIOClient.swift @@ -208,8 +208,8 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable } /// Send a message to the server - public func emit(_ event: String, _ items: AnyObject...) { - emit(event, with: items) + public func emit(_ event: String, _ items: SocketData...) { + emit(event, with: socketDataToAnyObject(data: items)) } /// Same as emit, but meant for Objective-C @@ -224,8 +224,8 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable /// Sends a message to the server, requesting an ack. Use the onAck method of SocketAckHandler to add /// an ack. - public func emitWithAck(_ event: String, _ items: AnyObject...) -> OnAckCallback { - return emitWithAck(event, with: items) + public func emitWithAck(_ event: String, _ items: SocketData...) -> OnAckCallback { + return emitWithAck(event, with: socketDataToAnyObject(data: items)) } /// Same as emitWithAck, but for Objective-C diff --git a/Source/SocketIOClientSpec.swift b/Source/SocketIOClientSpec.swift index 1e2051c..17be36c 100644 --- a/Source/SocketIOClientSpec.swift +++ b/Source/SocketIOClientSpec.swift @@ -40,4 +40,8 @@ extension SocketIOClientSpec { handleEvent("error", data: [reason as AnyObject], isInternalMessage: true, withAck: -1) } + + func socketDataToAnyObject(data: [SocketData]) -> [AnyObject] { + return data.flatMap({$0 as? AnyObject}) + } } diff --git a/Source/SocketTypes.swift b/Source/SocketTypes.swift index 7f27c42..595d5e5 100644 --- a/Source/SocketTypes.swift +++ b/Source/SocketTypes.swift @@ -24,6 +24,20 @@ import Foundation +public protocol SocketData {} + +extension Array : SocketData {} +extension Bool : SocketData {} +extension Dictionary : SocketData {} +extension Double : SocketData {} +extension Int : SocketData {} +extension NSArray : SocketData {} +extension NSData : SocketData {} +extension NSDictionary : SocketData {} +extension NSString : SocketData {} +extension NSNull : SocketData {} +extension String : SocketData {} + public typealias AckCallback = ([AnyObject]) -> Void public typealias NormalCallback = ([AnyObject], SocketAckEmitter) -> Void public typealias OnAckCallback = (timeoutAfter: UInt64, callback: AckCallback) -> Void