Поиск…


Вступление

Codable добавлен с Xcode 9, iOS 11 и Swift 4. Codable используется для кодирования и декодирования ваших типов данных для совместимости с внешними представлениями, такими как JSON.

Codable для поддержки кодирования и декодирования объявляет совместимость с Codable, которая объединяет кодируемые и декодируемые протоколы. Этот процесс известен как способ кодирования ваших типов.

Использование Codable с JSONEncoder и JSONDecoder в Swift 4

Давайте возьмем пример со структурой фильма, здесь мы определили структуру как Codable. Итак, мы можем легко кодировать и декодировать его.

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

Мы можем создать объект из фильма, например:

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

UpMovie содержит имя «Up», а movieGenere - это комедия, приключение и анимация, в которой содержится 4 рейтинга из 5.

шифровать

JSONEncoder - это объект, который кодирует экземпляры типа данных как объекты JSON. JSONEncoder поддерживает объект 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 предоставит нам данные JSON, которые используются для извлечения строки JSON.

Строка вывода будет выглядеть так:

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

раскодировать

JSONDecoder - это объект, который декодирует экземпляры типа данных из объектов JSON. Мы можем вернуть объект из строки 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 {
}

Дешифрируя JSONData, мы получим объект Movie назад. Таким образом, мы можем получить все значения, которые сохраняются в этом объекте.

Результат будет выглядеть следующим образом:

Name : Up
Rating : 4


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow