WWDC2023에서 드디어 매크로라는 혁신적인 기능이 나왔어요.
매크로는 상용구 코드(boilerplate-code)를 유려하게 처리할 수 있는 도구예요.
WWDC를 시청하며 “아! 이건 잘만 학습하면 정말 편하게 활용할 수 있겠구나!”라는 생각이 들었고, 이번 기회에 제가 생각한 아이디어를 구현해보면서 매크로를 사용하는 법을 설명드리려고 해요.
앱을 개발하다보면 서버로부터 JSON 객체를 받아와 개발자가 선언한 모델에 파싱하는 작업을 할 거예요. 이 때 우리는 항상 동일한 상용구를 작성하게 되죠. 예를 들어볼까요?
아래는 앱에서 처리해야하는 JSON 코드가 2개 있습니다.
{
"name": "SeungHyun Hong",
"age": 130,
"gender": "male"
"created_at": "2024-08-08T09:33:26Z"
}
{
"user_information": {
"is_admin": true,
"post_count": 30,
"is_banned": false
},
"total_users": 582
}
우리는 이 코드를 파싱하기 위해 아래처럼 구현할 거에요.
struct Model: Codable {
let name: String
let age: Int
let gender: Gender
let createdTime: Date
enum CodingKeys: String, CodingKey {
case name
case age
case gender
case createdTime = "created_at"
}
}
enum Gender: String, Codable {
case male
case female
case other
}
struct Model: Codable {
let userInformation: UserInfo
let totalUsers: Int
enum CodingKeys: String, CodingKey {
case userInformation = "user_information"
case totalUsers = "total_users"
}
}
struct UserInfo: Codable {
let isAdmin: Bool
let postCount: Int
let isBanned: Bool
enum CodingKeys: String, CodingKey {
case isAdmin = "is_admin"
case postCount = "post_count"
case isBanned = "is_banned"
}
}
두 모델을 살펴보면 보다시피 동일하게 반복되는 코드를 볼 수 있어요.