add codable method to avoid set actionType value

This commit is contained in:
Xinlei(Ryan) Pan 2020-03-17 16:17:58 -04:00
parent 0f6ded4591
commit a2c73d9d7d
2 changed files with 50 additions and 1 deletions

View File

@ -18,4 +18,26 @@ import UIKit
public var analyticsData: JSONValueDictionary?
public var title: String?
public enum CodingKeys: String, CodingKey {
case actionType
case title
case extraParameters
case analyticsData
}
public required init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
title = try typeContainer.decodeIfPresent(String.self, forKey: .title)
extraParameters = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .extraParameters)
analyticsData = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .analyticsData)
}
public func encode(to encoder: Encoder) throws {
var encoderContainer = encoder.container(keyedBy: CodingKeys.self)
try encoderContainer.encodeIfPresent(actionType, forKey: .actionType)
try encoderContainer.encodeIfPresent(title, forKey: .title)
try encoderContainer.encodeIfPresent(extraParameters, forKey: .extraParameters)
try encoderContainer.encodeIfPresent(analyticsData, forKey: .analyticsData)
}
}

View File

@ -11,7 +11,7 @@ import Foundation
@objcMembers public class ActionTopAlertModel: ActionModelProtocol {
public static var identifier: String = "topAlert"
public var actionType: String? = ActionTopAlertModel.identifier
public var actionType: String?
public var pageType: String
public var extraParameters: JSONValueDictionary?
public var analyticsData: JSONValueDictionary?
@ -21,4 +21,31 @@ import Foundation
public init(pageType: String) {
self.pageType = pageType
}
public enum CodingKeys: String, CodingKey {
case actionType
case pageType
case title
case extraParameters
case analyticsData
}
public required init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
pageType = try typeContainer.decode(String.self, forKey: .pageType)
title = try typeContainer.decodeIfPresent(String.self, forKey: .title)
extraParameters = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .extraParameters)
analyticsData = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .analyticsData)
}
public func encode(to encoder: Encoder) throws {
var encoderContainer = encoder.container(keyedBy: CodingKeys.self)
try encoderContainer.encodeIfPresent(actionType, forKey: .actionType)
try encoderContainer.encode(pageType, forKey: .pageType)
try encoderContainer.encodeIfPresent(title, forKey: .title)
try encoderContainer.encodeIfPresent(extraParameters, forKey: .extraParameters)
try encoderContainer.encodeIfPresent(analyticsData, forKey: .analyticsData)
}
}