# 공부를 위해 정리하는 글이므로, 정확하지 않을 수 있습니다.
-
Codable이란?
-
A type that can convert itself into and out of an external representation."
자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입
-
즉, 특정 객체가 Codable 프로토콜을 채택하면, 해당 객체는 'json'과 같은 외부 타입으로 인코딩과 다시 json에서 객체로 디코딩이 가능하게 된다.
-
-
Codable 객체를 json으로 인코딩하기
-
아래는 json으로 encoding한 예제이다. (Person객체 -> json)
-
인스턴스를 data 타입으로 인코딩
-
data타입을 json 타입으로 변경
-
-
func codableTest() {
struct Person : Codable{
var name : String?
var age : Int
}
let encoder = JSONEncoder()
let object = Person(name: "zeze", age: 7)
let jsonData = try? encoder.encode(object)
if let jsonData = jsonData, let jsonString = String(data: jsonData, encoding: .utf8){
print(jsonString) //{"name":"Zedd","age":100}
}
}
-
json을 인스턴스타입으로 파싱하기 ( jsonStr ➔ Data ➔ Object )
-
받아온 json을 인스턴스로 파싱하는 것이 더 자주 사용되는 방식
-
인코딩했던것과 반대방법으로
-
json을 읽어 json String 값으로 저장
-
json String 타입을 data타입으로 변경
-
data타입을 인스턴스로 디코딩
-
-
func codableDecoding(jsonStr : String){
let decoder = JSONDecoder()
var data = jsonStr.data(using: .utf8) // json형식을 Data타입으로 변경
// data타입을 인스턴스 타입으로 변경
if let data = data, let myPerson = try? decoder.decode(Person.self, from: data){
print(myPerson.name) //Zedd
print(myPerson.age)
}
}
※ json 파일을 json string으로 읽어오기
-
파일 경로 가져오기
-
파일경로로 json String 가져오기
let filePath = Bundle.main.path(forResource: "animals", ofType: "json")
let content = try! String(contentsOfFile: filePath!)
'iOS > iOS 앱개발' 카테고리의 다른 글
[swift] 앱에서 다른 앱 호출하기2 (1) | 2019.12.01 |
---|---|
[iOS] 객체 간 통신 - Notification (0) | 2019.11.24 |
[Swift] 앱에서 다른 앱 호출하기 (0) | 2019.11.18 |
[Objective-C] delay 주기 (0) | 2019.11.16 |
[iOS] Delegate와 Callback 메서드의 차이점 (0) | 2019.10.30 |