YunDaeHyeon
← Lab

iOS/Swift의 직렬화

스터디2025.06.14
  • Swift
  • Codable

iOS/Swift에서의 직렬화(Serialization)란?

  • 직렬화(Serialization)란 객체 데이터를 외부 표현(JSON 등)으로 변환(Encode)하거나 외부 표현을 객체로 복원(Decode) 과정하는 과정을 의미

Swift의 직렬화 방법

  • Swift에서 데이터를 직렬화시키기 위해선 Codable 프로토콜을 채택한다.
  • Codable은 내부적으로 Decodable과 Encodable을 합쳐 사용한다.
  • 구조체나 클래스가 Codable을 채택하면 JSON이나 plist 등으로 쉽게 변환할 수 있다!
struct User: Codable {
    var name: String
    var age: Int
}
let user = User(name: "Alice", age: 8)
let encoded = try JSONEncoder().encode(user)
let decoded = try JSONDecoder().decode(User.self, from: encoded)

  • 만약, NSObject 계열(NSDictionary나 NSArray 등)을 직렬화 시키고 싶다면 JSONSerialization 클래스를 활용해야한다.
  • 이때 원하는 객체를 딕셔너리나 배열로 매핑한 뒤 사용해야한다!
  • 참고 : https://dmtopolog.com/object-serialization-in-ios/
  • JSON이나 plist가 아닌 바이너리 데이터(NSData)로 직렬화해야한다면 NSCoding이나 NSKeyedArchiver를 활용해야한다.
  • NSCoding을 구현하면 encodeWithCoder이나 initWithCoder 메서드를 통해 키(Key) 기반 직렬화 및 역직렬화를 수행할 수 있다.
  • NSKeyedArchiver로 객체를 파일이나 UserDefaults 등에 저장할 수 있다!

참고자료

Codable | Apple Developer Documentation

Encodable | Apple Developer Documentation

Decodable | Apple Developer Documentation

JSONSerialization | Apple Developer Documentation

[iOS] Archive - NSCoding protocol, Serialization(직렬화), NSUserDefaults :: 본질의 중요성

[Swift] Codable 개념 확실히 이해하기 💬

CodingKey | Apple Developer Documentation