File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -220,21 +220,28 @@ internal struct _HandlerToken
220
220
221
221
internal struct _Handlers < T> : SequenceType
222
222
{
223
+ internal typealias KeyValue = ( key: Int , value: T )
224
+
223
225
private var currentKey : Int = 0
224
- private var elements = [ Int : T ] ( )
226
+ private var elements = [ KeyValue ] ( )
225
227
226
228
internal mutating func append( value: T ) -> _HandlerToken
227
229
{
228
230
self . currentKey = self . currentKey &+ 1
229
231
230
- self . elements [ self . currentKey] = value
232
+ self . elements += [ ( key : self . currentKey, value : value) ]
231
233
232
234
return _HandlerToken ( key: self . currentKey)
233
235
}
234
236
235
237
internal mutating func remove( token: _HandlerToken ) -> T ?
236
238
{
237
- return self . elements. removeValueForKey ( token. key)
239
+ for var i = 0 ; i < self . elements. count; i++ {
240
+ if self . elements [ i] . key == token. key {
241
+ return self . elements. removeAtIndex ( i) . value
242
+ }
243
+ }
244
+ return nil
238
245
}
239
246
240
247
internal mutating func removeAll( keepCapacity: Bool = false )
@@ -244,6 +251,6 @@ internal struct _Handlers<T>: SequenceType
244
251
245
252
internal func generate( ) -> GeneratorOf < T >
246
253
{
247
- return GeneratorOf ( self . elements. values . generate ( ) )
254
+ return GeneratorOf ( self . elements. map { $0 . value } . generate ( ) )
248
255
}
249
256
}
You can’t perform that action at this time.
0 commit comments