Я сейчас сижу здесь над, как я сначала подумал, очень простой проблемой.Я хочу кодировать объект в Swift, который наследует другой класс .
Здесь классы:
class NetworkMessage: Codable {
var version:Int?
}
class AddPlayerRequest: NetworkMessage {
var playerName: String?
var playerHashedPw: String?
private enum CodingKeys: String, CodingKey {
case playerName
case playerHashedPw
}
override func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(playerName, forKey: .playerName)
try container.encode(playerHashedPw, forKey: .playerHashedPw)
try super.encode(to: encoder)
}
}
Я знаю, что есть миллионы примеров для этого, и ясказал бы, я уверен, что я сделал все, как в примерах, но кажется, что я что-то пропустил, потому что, когда я пытаюсь кодировать AddPlayerRequest
, как это:
let apr = AddPlayerRequest()
apr.playerName = "Test"
apr.playerHashedPw = "hynt87t7t76yt=="
apr.version = 1
do {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(apr)
let jsonStr = String(data: data, encoding: .utf8)
} catch {
print(error)
}
Вывод:
{
}
РЕДАКТИРОВАТЬ: Кажется, что тот же код работает на другом MAC.У кого-нибудь есть идея, почему возможно, что Код работает на одном MAC, а не на другом?