(Dies ist ein Follow-up von dieser Frage. Using Decodable protocol with multiples keys)Swift Dekodierbare Optional Key
Ich habe folgende Swift Code:
let additionalInfo = try values.nestedContainer(keyedBy: UserInfoKeys.self, forKey: .age)
age = try additionalInfo.decodeIfPresent(Int.self, forKey: .realage)
Ich weiß, wenn ich decodeIfPresent
und don Wenn Sie eine optionale Variable haben, wird sie immer noch korrekt behandelt.
Zum Beispiel funktioniert das folgende JSON, um es mit dem obigen Code zu analysieren.
{
"firstname": "Test",
"lastname": "User",
"age": {"realage": 29}
}
Und das folgende JSON funktioniert auch.
{
"firstname": "Test",
"lastname": "User",
"age": {"notrealage": 30}
}
Aber das Folgende funktioniert nicht.
{
"firstname": "Test",
"lastname": "User"
}
Wie kann ich alle 3 Beispiele arbeiten lassen? Gibt es etwas Ähnliches wie decodeIfPresent
für nestedContainer
?
Ich versuche, dies mit 1 Klasse/struct zu erreichen. Ich habe bestimmte Gründe dafür, es mit 1 Klasse/Struktur zu entwerfen. Siehe meine Frage und Antwort [hier] (https://stackoverflow.com/a/46737735/894067) für weitere Informationen. –
Ah, ich sehe - ich muss der Antwort dort zustimmen, die ein "rohes" Modell vorschlägt, das der JSON-Struktur entspricht, die Sie Ihrem übergeordnete Modell mit dem eigenwilligen Verhalten zuordnen konnten, das Sie wünschen! Ich denke, das könnte viel einfacher zu verwalten und zu verstehen sein als die Implementierung von benutzerdefinierten Decodern, aber viel Glück auf jeden Fall! –
So wie meine Daten in meinen Serverdateien strukturiert sind, macht es viel einfacher, benutzerdefinierte Decoder zu verwenden. Und nur durch mein Verständnis und Strukturieren ist es viel einfacher, es so zu machen. Vielleicht kann jemand eine Antwort geben, die zu dem passt, was ich will. Danke für deine Hilfe. –