Suche…


Einführung

Codable wird mit Xcode 9, iOS 11 und Swift 4 hinzugefügt. Codable wird verwendet, um Ihre Datentypen für die Kompatibilität mit externen Repräsentationen wie JSON codierbar und decodierbar zu machen.

Codable verwenden, um sowohl das Codieren als auch das Decodieren zu unterstützen. Deklarieren Sie die Konformität mit Codable, die die Protokolle Encodable und Decodable kombiniert. Dieser Vorgang ist dafür bekannt, Ihre Typen codierbar zu machen.

Verwendung von Codable mit JSONEncoder und JSONDecoder in Swift 4

Nehmen wir ein Beispiel mit der Struktur des Films. Hier haben wir die Struktur als codierbar definiert. So können wir es leicht codieren und decodieren.

struct Movie: Codable {
    enum MovieGenere: String, Codable {
        case horror, skifi, comedy, adventure, animation
    }
    
    var name : String
    var moviesGenere : [MovieGenere]
    var rating : Int
}

Wir können ein Objekt aus einem Film erstellen wie:

let upMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)

Der upMovie enthält den Namen "Up" und sein movieGenere ist Comedy, Abenteuer und Animation, die 4 von 5 Punkten enthält.

Kodieren

JSONEncoder ist ein Objekt, das Instanzen eines Datentyps als JSON-Objekte codiert. JSONEncoder unterstützt das Codable-Objekt.

// Encode data
let jsonEncoder = JSONEncoder()
do {
    let jsonData = try jsonEncoder.encode(upMovie)
    let jsonString = String(data: jsonData, encoding: .utf8)
    print("JSON String : " + jsonString!)
}
catch {
}

JSONEncoder gibt uns die JSON-Daten an, die zum Abrufen der JSON-Zeichenfolge verwendet werden.

Ausgabestring wird wie folgt aussehen:

{
  "name": "Up",
  "moviesGenere": [
    "comedy",
    "adventure",
    "animation"
  ],
  "rating": 4
}

Dekodieren

JSONDecoder ist ein Objekt, das Instanzen eines Datentyps von JSON-Objekten dekodiert. Wir können das Objekt von der JSON-Zeichenfolge zurückholen.

do {
    // Decode data to object
    
    let jsonDecoder = JSONDecoder()
    let upMovie = try jsonDecoder.decode(Movie.self, from: jsonData)
    print("Rating : \(upMovie.name)")
    print("Rating : \(upMovie.rating)")
}
catch {
}

Durch die Dekodierung der JSONData erhalten wir das Movie-Objekt zurück. So können wir alle Werte erhalten, die in diesem Objekt gespeichert sind.

Ausgabe wird wie folgt sein:

Name : Up
Rating : 4


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow