Skip to content

Instantly share code, notes, and snippets.

@tarunon
Created May 6, 2018 05:46
Show Gist options
  • Save tarunon/5428dab8b75cab63b47635bc28a155bf to your computer and use it in GitHub Desktop.
Save tarunon/5428dab8b75cab63b47635bc28a155bf to your computer and use it in GitHub Desktop.
Don't compile me.
public struct _ModelX<_ModelN: Codable>: Codable {
public var model0: _ModelN
public var model1: Bool?
public var model2: Bool?
public var model3: Bool?
public var model4: Bool?
public var model5: Bool?
public var model6: Bool?
public var model7: Bool?
public var model8: Bool?
public var model9: Bool?
public var model10: Bool?
public var model11: Bool?
public var model12: Bool?
public var model13: Bool?
public var model14: Bool?
public var model15: Bool?
public var model16: Bool?
public var model17: Bool?
public var model18: Bool?
public var model19: Bool?
}
public typealias ModelX = _ModelX<Bool?>
public protocol ModelXConvertible {
func asModelX() -> ModelX
}
extension _ModelX: ModelXConvertible {
public func asModelX() -> ModelX {
return ModelX(
model1: model1,
model0: (model0 as _ModelN) as? Bool,
model2: model2,
model3: model3,
model4: model4,
model5: model5,
model6: model6,
model7: model7,
model8: model8,
model9: model9,
model10: model10,
model11: model11,
model12: model12,
model13: model13,
model14: model14,
model15: model15,
model16: model16,
model17: model17,
model18: model18,
model19: model19
)
}
}
public extension ModelXConvertible {
public var model0: Bool? { return asModelX().model0 }
public var model1: Bool? { return asModelX().model1 }
public var model2: Bool? { return asModelX().model2 }
public var model3: Bool? { return asModelX().model3 }
public var model4: Bool? { return asModelX().model4 }
public var model5: Bool? { return asModelX().model5 }
public var model6: Bool? { return asModelX().model6 }
public var model7: Bool? { return asModelX().model7 }
public var model8: Bool? { return asModelX().model8 }
public var model9: Bool? { return asModelX().model9 }
public var model10: Bool? { return asModelX().model10 }
public var model11: Bool? { return asModelX().model11 }
public var model12: Bool? { return asModelX().model12 }
public var model13: Bool? { return asModelX().model13 }
public var model14: Bool? { return asModelX().model14 }
public var model15: Bool? { return asModelX().model15 }
public var model16: Bool? { return asModelX().model16 }
public var model17: Bool? { return asModelX().model17 }
public var model18: Bool? { return asModelX().model18 }
public var model19: Bool? { return asModelX().model19 }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment