Skip to content

Instantly share code, notes, and snippets.

@TsRebornz
Created November 29, 2022 19:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TsRebornz/0b022325006e006a61614a70ab7d91bd to your computer and use it in GitHub Desktop.
Save TsRebornz/0b022325006e006a61614a70ab7d91bd to your computer and use it in GitHub Desktop.
struct TableStructMapper<T> {
let sizeWidthdKeyPath: KeyPath<T, Int>
let sizeHeightKeyPath: KeyPath<T, Int>
let materialKeyPath: KeyPath<T, String>
func map(with mapper: T) -> Table {
return .init(
size: .init(
width: mapper[keyPath: sizeWidthdKeyPath],
height: mapper[keyPath: sizeHeightKeyPath]
),
material: .init(rawValue: mapper[keyPath: materialKeyPath])! // forceunwrap
)
}
}
let mapperNetworkModel = TableStructMapper(
sizeWidthdKeyPath: \TableDTO.width,
sizeHeightKeyPath: \TableDTO.height,
materialKeyPath: \TableDTO.material
)
let mappeCoredataModel = TableStructMapper(
sizeWidthdKeyPath: \TableEntity.width,
sizeHeightKeyPath: \TableEntity.height,
materialKeyPath: \TableEntity.material
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment