Implemented the "init(from: )" initialiser and the "encode(to: )" function of the Codable protocol for the Review+Codable extension in the iTunes library.

This commit is contained in:
Javier Cicchelli 2024-03-17 23:03:05 +01:00
parent bd72c4fb7c
commit fc58ccf091

View File

@ -1,5 +1,5 @@
//
// Review.swift
// Review+Codable.swift
// ReviewsiTunesKit
//
// Created by Javier Cicchelli on 17/03/2024.
@ -9,6 +9,7 @@
import Foundation
import ReviewsFeedKit
// MARK: - Decodable
extension Review: Decodable {
// MARK: Enumerations
@ -54,3 +55,30 @@ extension Review: Decodable {
}
}
// MARK: - Encodable
extension Review: Encodable {
// MARK: Functions
public func encode(to encoder: any Encoder) throws {
var review = encoder.container(keyedBy: ReviewKeys.self)
var authorName = review.nestedContainer(keyedBy: NameKeys.self, forKey: .author)
var authorLabel = authorName.nestedContainer(keyedBy: LabelKeys.self, forKey: .name)
var contentLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .content)
var idLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .id)
var ratingLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .rating)
var titleLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .title)
var versionLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .version)
var updatedLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .updated)
try authorLabel.encode(author, forKey: .label)
try contentLabel.encode(content, forKey: .label)
try idLabel.encode(String(id), forKey: .label)
try ratingLabel.encode(String(rating), forKey: .label)
try titleLabel.encode(title, forKey: .label)
try versionLabel.encode(version, forKey: .label)
try updatedLabel.encode(updated, forKey: .label)
}
}