2222
2323import Foundation
2424
25- private let shredder = SocketParser . Deconstructor ( )
25+ private let shredder = SocketParser . PacketShredder ( )
2626
2727class SocketParser {
2828 // Translation of socket.io-parser#deconstructPacket
29- private class Deconstructor {
29+ private class PacketShredder {
3030 var buf = ContiguousArray < NSData > ( )
31-
32- func ripAndTear ( data: AnyObject ) -> AnyObject {
31+
32+ func shred ( data: AnyObject ) -> AnyObject {
3333 if let bin = data as? NSData {
3434 let placeholder = [ " _placeholder " : true , " num " : buf. count]
3535
3636 buf. append ( bin)
3737
3838 return placeholder
39- } else if var arr = data as? [ AnyObject ] {
39+ } else if let arr = data as? NSArray {
40+ var newArr = NSMutableArray ( array: arr)
41+
4042 for i in 0 ..< arr. count {
41- arr [ i] = ripAndTear ( arr [ i] )
43+ newArr [ i] = shred ( arr [ i] )
4244 }
4345
44- return arr
45- } else if var newDict = data as? [ String : AnyObject ] {
46+ return newArr
47+ } else if let dict = data as? NSDictionary {
48+ var newDict = NSMutableDictionary ( dictionary: dict)
49+
4650 for (key, value) in newDict {
47- newDict [ key] = ripAndTear ( value)
51+ newDict [ key as NSCopying ] = shred ( value)
4852 }
4953
5054 return newDict
@@ -62,7 +66,7 @@ class SocketParser {
6266
6367 for i in 0 ..< data. count {
6468 if data [ i] is NSArray || data [ i] is NSDictionary {
65- data [ i] = ripAndTear ( data [ i] )
69+ data [ i] = shred ( data [ i] )
6670 } else if let bin = data [ i] as? NSData {
6771 data [ i] = [ " _placeholder " : true , " num " : buf. count]
6872 buf. append ( bin)
0 commit comments