Skip to content

Instantly share code, notes, and snippets.

@sturdysturge
Last active January 5, 2021 19:39
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 sturdysturge/ba849139ba66dbbe0e4a34a32e730e7a to your computer and use it in GitHub Desktop.
Save sturdysturge/ba849139ba66dbbe0e4a34a32e730e7a to your computer and use it in GitHub Desktop.
import Foundation
struct XKCD: Codable {
let month: String
let num: Int
let link, year, news, safeTitle: String
let transcript, alt: String
let img: String
let title, day: String
enum CodingKeys: String, CodingKey {
case month, num, link, year, news, transcript,
alt, img, title, day, safeTitle = "safe_title"
}
}
import Foundation
extension URL {
func getFromPublisher<T: Codable>(property: inout Published<T>.Publisher) {
URLSession.shared.dataTaskPublisher(for: self)
.receive(on: DispatchQueue.main)
.map(\.data)
.decode(type: T.self, decoder: JSONDecoder())
.assertNoFailure()
.assign(to: &property)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment