@@ -188,72 +188,49 @@ class SocketPacket {
188
188
return message + " ] "
189
189
}
190
190
191
- private func fillInArray( arr: NSArray ) -> NSArray {
192
- var newArr = [ AnyObject] ( count: arr. count, repeatedValue: 0 )
193
- // println(arr)
191
+ func fillInPlaceholders( ) {
192
+ var newArr = NSMutableArray ( array: self . data!)
194
193
195
- for i in 0 ..< arr. count {
196
- if let nest = arr [ i] as? NSArray {
197
- newArr [ i] = self . fillInArray ( nest)
198
- } else if let dict = arr [ i] as? NSDictionary {
199
- newArr [ i] = self . fillInDict ( dict)
200
- } else if let str = arr [ i] as? String {
194
+ for i in 0 ..< self . data!. count {
195
+ if let str = self . data ? [ i] as? String {
201
196
if let num = str [ " ~~( \\ d) " ] . groups ( ) {
202
197
newArr [ i] = self . binary [ num [ 1 ] . toInt ( ) !]
203
198
} else {
204
- newArr [ i] = arr [ i ]
199
+ newArr [ i] = str
205
200
}
206
- } else {
207
- newArr [ i] = arr [ i]
201
+ } else if self . data ? [ i ] is NSDictionary || self . data ? [ i ] is NSArray {
202
+ newArr [ i] = self . _fillInPlaceholders ( self . data! [ i] )
208
203
}
209
204
}
210
205
211
- return newArr
206
+ self . data = newArr
212
207
}
213
208
214
- private func fillInDict( dict: NSDictionary ) -> NSDictionary {
215
- var newDict = [ String: AnyObject] ( )
216
-
217
- for (key, value) in dict {
218
- newDict [ key as String ] = value
209
+ private func _fillInPlaceholders( data: AnyObject ) -> AnyObject {
210
+ if let str = data as? String {
211
+ if let num = str [ " ~~( \\ d) " ] . groups ( ) {
212
+ return self . binary [ num [ 1 ] . toInt ( ) !]
213
+ } else {
214
+ return str
215
+ }
216
+ } else if let dict = data as? NSDictionary {
217
+ var newDict = NSMutableDictionary ( dictionary: dict)
219
218
220
- // If the value is a string we need to check
221
- // if it is a placeholder for data
222
- if let str = value as? String {
223
- if let num = str [ " ~~( \\ d) " ] . groups ( ) {
224
- newDict [ key as String ] = self . binary [ num [ 1 ] . toInt ( ) !]
225
- } else {
226
- newDict [ key as String ] = str
227
- }
228
- } else if let nestDict = value as? NSDictionary {
229
- newDict [ key as String ] = self . fillInDict ( nestDict)
230
- } else if let arr = value as? NSArray {
231
- newDict [ key as String ] = self . fillInArray ( arr)
219
+ for (key, value) in dict {
220
+ newDict [ key as NSCopying ] = _fillInPlaceholders ( value)
232
221
}
233
- }
234
-
235
- return newDict
236
- }
237
-
238
- func fillInPlaceholders( ) {
239
- var newArr = [ AnyObject] ( count: self . data!. count, repeatedValue: 0 )
240
-
241
- for i in 0 ..< self . data!. count {
242
- if let str = self . data ? [ i] as? String {
243
- if let num = str [ " ~~( \\ d) " ] . groups ( ) {
244
- newArr [ i] = self . binary [ num [ 1 ] . toInt ( ) !]
245
- } else {
246
- newArr [ i] = str
247
- }
248
- } else if let arr = self . data ? [ i] as? NSArray {
249
- newArr [ i] = self . fillInArray ( arr)
250
- } else if let dict = self . data ? [ i] as? NSDictionary {
251
- newArr [ i] = self . fillInDict ( dict)
252
- } else {
253
- newArr [ i] = self . data![ i]
222
+
223
+ return newDict
224
+ } else if let arr = data as? NSArray {
225
+ var newArr = NSMutableArray ( array: arr)
226
+
227
+ for i in 0 ..< arr. count {
228
+ newArr [ i] = _fillInPlaceholders ( arr [ i] )
254
229
}
230
+
231
+ return newArr
232
+ } else {
233
+ return data
255
234
}
256
-
257
- self . data = newArr
258
235
}
259
236
}
0 commit comments