Zoeken…


Invoering

Codable wordt toegevoegd met Xcode 9, iOS 11 en Swift 4. Codable wordt gebruikt om uw datatypes codeerbaar en decodeerbaar te maken voor compatibiliteit met externe representaties zoals JSON.

Codeerbaar gebruik om zowel codering als decodering te ondersteunen, verklaar conformiteit met Codable, dat de codeerbare en decodeerbare protocollen combineert. Dit proces staat bekend als het codeerbaar maken van uw typen.

Gebruik van Codable met JSONEncoder en JSONDecoder in Swift 4

Laten we een voorbeeld nemen met de structuur van de film, hier hebben we de structuur gedefinieerd als Codable. We kunnen het dus gemakkelijk coderen en decoderen.

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

We kunnen een object van film maken zoals:

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

De upMovie bevat de naam "Up" en het is film Genere is komedie, avontuur en animatie die 4 van de 5 beoordelingen bevat.

Coderen

JSONEncoder is een object dat instanties van een gegevenstype codeert als JSON-objecten. JSONEncoder ondersteunt het Codable-object.

// 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 geeft ons de JSON-gegevens die worden gebruikt om de JSON-string op te halen.

Uitvoertekenreeks ziet er als volgt uit:

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

Decoderen

JSONDecoder is een object dat instanties van een gegevenstype decodeert van JSON-objecten. We kunnen het object terughalen van de JSON-string.

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

Door de JSONData te decoderen ontvangen we het Movie-object terug. We kunnen dus alle waarden ophalen die in dat object zijn opgeslagen.

Uitvoer is als:

Name : Up
Rating : 4


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow