@@ -435,75 +435,76 @@ private struct _ParseEncoderKeyedEncodingContainer<Key: CodingKey>: KeyedEncodin
435435
436436 // MARK: - KeyedEncodingContainerProtocol Methods
437437 mutating func encodeNil( forKey key: Key ) throws {
438- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
438+ guard !shouldSkipKey ( key) else { return }
439439 container [ key. stringValue] = NSNull ( )
440440 }
441441 mutating func encode( _ value: Bool , forKey key: Key ) throws {
442- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
442+ guard !shouldSkipKey ( key) else { return }
443443 self . container [ key. stringValue] = self . encoder. box ( value)
444444 }
445445 mutating func encode( _ value: Int , forKey key: Key ) throws {
446- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
446+ guard !shouldSkipKey ( key) else { return }
447447 self . container [ key. stringValue] = self . encoder. box ( value)
448448 }
449449 mutating func encode( _ value: Int8 , forKey key: Key ) throws {
450- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
450+ guard !shouldSkipKey ( key) else { return }
451451 self . container [ key. stringValue] = self . encoder. box ( value)
452452 }
453453 mutating func encode( _ value: Int16 , forKey key: Key ) throws {
454- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
454+ guard !shouldSkipKey ( key) else { return }
455455 self . container [ key. stringValue] = self . encoder. box ( value)
456456 }
457457 mutating func encode( _ value: Int32 , forKey key: Key ) throws {
458- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
458+ guard !shouldSkipKey ( key) else { return }
459459 self . container [ key. stringValue] = self . encoder. box ( value)
460460 }
461461 mutating func encode( _ value: Int64 , forKey key: Key ) throws {
462- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
462+ guard !shouldSkipKey ( key) else { return }
463463 self . container [ key. stringValue] = self . encoder. box ( value)
464464 }
465465 mutating func encode( _ value: UInt , forKey key: Key ) throws {
466- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
466+ guard !shouldSkipKey ( key) else { return }
467467 self . container [ key. stringValue] = self . encoder. box ( value)
468468 }
469469 mutating func encode( _ value: UInt8 , forKey key: Key ) throws {
470- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
470+ guard !shouldSkipKey ( key) else { return }
471471 self . container [ key. stringValue] = self . encoder. box ( value)
472472 }
473473 mutating func encode( _ value: UInt16 , forKey key: Key ) throws {
474- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
474+ guard !shouldSkipKey ( key) else { return }
475475 self . container [ key. stringValue] = self . encoder. box ( value)
476476 }
477477 mutating func encode( _ value: UInt32 , forKey key: Key ) throws {
478- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
478+ guard !shouldSkipKey ( key) else { return }
479479 self . container [ key. stringValue] = self . encoder. box ( value)
480480 }
481481 mutating func encode( _ value: UInt64 , forKey key: Key ) throws {
482- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
482+ guard !shouldSkipKey ( key) else { return }
483483 self . container [ key. stringValue] = self . encoder. box ( value)
484484 }
485485 mutating func encode( _ value: String , forKey key: Key ) throws {
486- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
486+ guard !shouldSkipKey ( key) else { return }
487487 self . container [ key. stringValue] = self . encoder. box ( value)
488488 }
489489 mutating func encode( _ value: Float , forKey key: Key ) throws {
490490 // Since the float may be invalid and throw, the coding path needs to contain this key.
491- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
491+ guard !shouldSkipKey ( key) else { return }
492492 self . encoder. codingPath. append ( key)
493493 defer { self . encoder. codingPath. removeLast ( ) }
494494 self . container [ key. stringValue] = try self . encoder. box ( value)
495495 }
496496
497497 mutating func encode( _ value: Double , forKey key: Key ) throws {
498498 // Since the double may be invalid and throw, the coding path needs to contain this key.
499- if self . encoder . skippedKeys . contains ( key. stringValue ) && ! self . encoder . ignoreSkipKeys { return }
499+ guard !shouldSkipKey ( key) else { return }
500500 self . encoder. codingPath. append ( key)
501501 defer { self . encoder. codingPath. removeLast ( ) }
502502 self . container [ key. stringValue] = try self . encoder. box ( value)
503503 }
504504
505505 mutating func encode< T> ( _ value: T , forKey key: Key ) throws where T: Encodable {
506- if self . encoder. skippedKeys. contains ( key. stringValue) && !self . encoder. ignoreSkipKeys { return }
506+
507+ guard !shouldSkipKey( key) else { return }
507508
508509 var valueToEncode : Encodable = value
509510 if ( ( value as? Objectable ) != nil )
@@ -542,6 +543,13 @@ private struct _ParseEncoderKeyedEncodingContainer<Key: CodingKey>: KeyedEncodin
542543 self . container [ key. stringValue] = try self . encoder. box ( valueToEncode)
543544 }
544545
546+ func shouldSkipKey( _ key: Key ) -> Bool {
547+ guard self . encoder. skippedKeys. contains ( key. stringValue) && !self . encoder. ignoreSkipKeys else {
548+ return false
549+ }
550+ return true
551+ }
552+
545553 mutating func nestedContainer< NestedKey> (
546554 keyedBy keyType: NestedKey . Type ,
547555 forKey key: Key
0 commit comments