← 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 :: 본질의 중요성