Wie konvertiert man ein Swift-Objekt in ein Wörterbuch?
Ich bin relativ neu in der iOS-Programmierung. Allerdings hätte ich angenommen, dass Swift würde eine automatisierte Möglichkeit der Umwandlung von Objekten nach JSON und Umgekehrt. That being said, ich haben einige Bibliotheken, die das können.
JEDOCH...
Es scheint, dass, egal, wie man post-Daten an einen web-Dienst (auch mit so etwas wie AlamoFire), der Anforderungen muss ein Wörterbuch. Alle diese Foren Beispiele zeigen, wie einfach es ist, umwandeln der zurückgegebene JSON-string zu Objekten. Wahr. Aber die Anfrage muss manuell codiert werden. Das heißt, gehen durch alle Objekt-Eigenschaften und ordnen Sie Sie wie ein Wörterbuch.
Also meine Frage ist: Bin ich etwas fehlt? Habe ich das alles falsch und es gibt eine super-einfache Möglichkeit, entweder (a) senden JSON (statt eines Wörterbuchs) in dem ANTRAG oder (b) wandeln Sie ein Objekt automatisch zu einem Wörterbuch?
Wieder, ich sehe, wie einfach es ist, sich mit einem JSON-Antwort. Ich bin gerade auf der Suche für einen automatischen Weg, um zu konvertieren das request-Objekt möchte ich veröffentlichen, um einen web service in ein format, dass eine Bibliothek wie AlamoFire (oder was auch immer) benötigt. Mit anderen Sprachen ist dies trivial, so dass ich hoffe, es gibt eine ebenso einfache und automatisierte Möglichkeit mit Swift.
InformationsquelleAutor der Frage JL Gradley | 2015-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Swift derzeit nicht unterstützt erweiterte Reflexion, wie Java oder C# die Antwort ist also: Nein, gibt es nicht eine ebenso einfache und automatische Weise mit reinem Swift.
[Update] Swift 4 hat mittlerweile die
Codable
- Protokoll, das ermöglicht Serialisierung nach/von JSON und PLIST.InformationsquelleAutor der Antwort Darko
Muss ich widersprechen @Darko.
In Swift 2,
verwenden Protokoll-orientierte Programmierung und der einfachen Reflexion angeboten von Spiegel Klasse :
dann können Sie verwenden, dieses Protokoll mit Ihren Wunsch-Klasse, und produzieren das gewünschte Wörterbuch :
InformationsquelleAutor der Antwort fencingCode
Ohne mit Reflexion und arbeitet für verschachtelte Objekte Swift (4):
Einfach implementieren Eigenschaften und valueForKey für die benutzerdefinierten Objekte, die Sie konvertieren möchten. Zum Beispiel:
Können Sie weitere Werte-Typen in der toDictionary-Funktion, wenn Sie brauchen.
InformationsquelleAutor der Antwort Michael Eilers Smith
Können Sie auch die ObjectMapper Bibliothek. Es hat eine "toJSON-Methode wandelt das Objekt um ein Wörterbuch.
InformationsquelleAutor der Antwort Remy Cilia