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