수색…
소개
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