Triviapp
Enjoy awesome Trivia questions.
The Trivia API
This app utilizes the free trivia database, Open Trivia. Which is a collection of trivia questions and answers provided by the internet. The raw trivia has HTML elements in it, so both the questions and answers must be filtered.
There is a standard extension implemented that takes the string value and converts the HTML elements into characters.
extension String {
var decoded: String {
let attr = try? NSAttributedString(data: Data(utf8), options: [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
], documentAttributes: nil)
return attr?.string ?? self
}
}
The raw trivia data is decoded when pulled from the API.
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
question = try container.decode(String.self, forKey: .question).decoded
}