Im obigen Beispiel haben wir trotz Hinzufügung der Initialisierungsfunktion die Notwendigkeit vieler ausführlicher „if-let“- und „guard-else“-Anweisungen beim Parsen des Codes eliminiert (nur notwendig bei der Behandlung der optionalen Rückgabe beim Erstellen einer URL). Beachten Sie außerdem, dass die reguläre, nicht optionale Eigenschaft id und die optionale Eigenschaft caption mit derselben Codesyntax analysiert werden. Der erste Parameter der Decodierungsfunktion für die Beschriftung gibt an, dass ein optionaler Wert erwartet wird, indem ein Fragezeichen hinter dem erwarteten Datentyp angehängt wird.
An dieser Stelle nähert sich unser Parsing-Code der Länge des ursprünglichen nicht codierbaren Objekts. Der neue Code ist jedoch übersichtlicher und trennt die Bereiche des Codes, in denen häufig Tippfehler gemacht werden (die Zeichenketten, die JSON-Schlüssel angeben), in ein leicht identifizierbares Enum.
Durch die Trennung der JSON-Schlüssel in ein Enum und die Eliminierung der meisten „if-let“- und „guard-else“-Anweisungen gibt uns das oben gezeigte Codable-Protokoll reichlich Raum, um auf unsere Objekte aufzubauen, ohne die Komplexität des Codes drastisch zu erhöhen.
Einzelpersonen oder Teams, die sowohl ihren Back-End- als auch ihren Front-End-Code verwalten, haben in der Regel die Freiheit, ihr Datenmodell kontinuierlich anzupassen, um mit ihren visuellen Modellen zusammenzuarbeiten, und das mit wenig logistischem Aufwand (wenn Sie noch nie an einem Meeting zwischen gleichermaßen sturen Front-End- und Back-End-Entwicklern teilgenommen haben, können Sie sich glücklich schätzen). Für diejenigen, die in diese Kategorie fallen, besteht der Vorteil der Implementierung von Codable darin, dass Swift-Objekte mit so wenig Code wie möglich deklariert und geparst werden und dass sie mit den Best Practices und Erwartungen von Apple Schritt halten können. Wenn Sie jedoch zu einem großen Entwicklungsteam gehören, das sich mit APIs befasst, die von einem anderen Unternehmen bereitgestellt werden und bei denen Sie keine Kontrolle über den Zeitpunkt oder die Details von Änderungen an den Daten haben, deren Rückgabe Sie erwarten, könnte Codable Ihr leuchtender Hoffnungsschimmer inmitten des Wahnsinns sein.
Stellen Sie sich vor, Sie machen drei API-Aufrufe in verschiedenen Bereichen einer Anwendung, von denen jeder genau das gleiche Swift-Objekt zurückgeben soll. In dieser unglücklichen API gibt jeder dieser Aufrufe Daten mit einem leicht unterschiedlichen Wörterbuchschlüssel zurück: object_id, obj_id und Object_ID, die alle auf dieselbe Eigenschaft, objectId, des Objekts verweisen sollen, das Sie erstellen möchten. Zuvor musste eine Dekodierungsfunktion eine Reihe von „if-let“-Anweisungen enthalten, um die id in jedem dieser Schlüssel zu überprüfen, bevor sie schließlich entscheiden konnte, welcher Wert, wenn überhaupt, als Eigenschaft gesetzt werden sollte.