delegate object for model decoding functions
This commit is contained in:
parent
0ac85efff1
commit
5abda67b00
@ -61,4 +61,26 @@ extension Decodable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum DecoderKeyError: Error {
|
||||||
|
case createKey
|
||||||
|
}
|
||||||
|
|
||||||
|
public extension JSONDecoder {
|
||||||
|
/// Adds a delegate object to the decoder for use in the model initializers.
|
||||||
|
func add<T: DelegateObject>(delegateObject: T) throws {
|
||||||
|
guard let key = CodingUserInfoKey(rawValue: "delegateObject") else {
|
||||||
|
throw DecoderKeyError.createKey
|
||||||
|
}
|
||||||
|
userInfo.updateValue(delegateObject, forKey: key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public extension Decoder {
|
||||||
|
/// Gets a delegate object from the decoder for use in the model initializers. Had to be added before decode.
|
||||||
|
func get<T: DelegateObject>() throws -> T? {
|
||||||
|
guard let key = CodingUserInfoKey(rawValue: "delegateObject") else {
|
||||||
|
throw DecoderKeyError.createKey
|
||||||
|
}
|
||||||
|
return userInfo[key] as? T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user