수색…


소개

Codable 은 Xcode 9, iOS 11 및 Swift 4와 함께 추가됩니다. Codable은 JSON과 같은 외부 표현과의 호환성을 위해 인코딩 가능하고 디코딩 가능한 데이터 유형을 만드는 데 사용됩니다.

인코딩 및 디코딩을 모두 지원하는 코드 가능 사용은 인코딩 가능 및 디코딩 가능 프로토콜을 결합한 Codable에 대한 적합성을 선언합니다. 이 과정은 귀하의 유형을 코딩 가능하게 만드는 것으로 알려져 있습니다.

Swift 4에서 JSONncoder 및 JSONDecoder와 함께 Codable 사용

Movie의 구조를 예로 들어 봅시다. 여기서 구조를 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는 코미디이며 모험과 애니메이션 마녀는 5 점 만점에 4 점을 포함합니다.

인코딩

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

JSONncoder는 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