Recherche…


Introduction

Codable est ajouté avec Xcode 9, iOS 11 et Swift 4. Codable est utilisé pour rendre vos types de données encodables et décodables pour les rendre compatibles avec des représentations externes telles que JSON.

Utilisation codable pour prendre en charge à la fois l'encodage et le décodage, déclarer la conformité à Codable, qui combine les protocoles codables et décodables. Ce processus est appelé rendre vos types codables.

Utilisation de codable avec JSONEncoder et JSONDecoder dans Swift 4

Prenons un exemple avec Structure of Movie, ici nous avons défini la structure comme Codable. Donc, nous pouvons l'encoder et le décoder facilement.

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

Nous pouvons créer un objet à partir d'un film comme:

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

Le upMovie contient le nom «Up» et son film Genere est la comédie, l'aventure et l'animation qui contient 4 sur 5.

Encoder

JSONEncoder est un objet qui code les instances d'un type de données en tant qu'objets JSON. JSONEncoder prend en charge l'objet Codable.

// 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 nous donnera les données JSON utilisées pour récupérer la chaîne JSON.

La chaîne de sortie sera comme:

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

Décoder

JSONDecoder est un objet qui décode des instances d'un type de données à partir d'objets JSON. Nous pouvons récupérer l'objet à partir de la chaîne JSON.

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 {
}

En décodant la JSONDATA, nous recevrons l'objet Movie. Nous pouvons donc obtenir toutes les valeurs enregistrées dans cet objet.

Le résultat sera comme:

Name : Up
Rating : 4


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow