[Swift] 실패 가능한 이니셜라이저 (Failable Initializers)

임주희·2022년 12월 3일
0

실패 가능한 이니셜라이저 (Failable Initializers)

초기화 과정 중에 실패할 가능성이 있는 이니셜라이저로, init뒤에 물음표(?)를 표기하여 사용할 수 있습니다. 초기화 과정 중에 실패할 경우 nil을 반환합니다.

struct SomeData {
    let id: Int
    let name: String
    let description: String
    
    
    init(id: Int, name: String, description: String){
        self.id = id
        self.name = name
        self.description = description
    }
    
    // 실패 가능한 이니셜라이저
    init?(dic: [String : Any]){
        guard let id = dic["id"] as? Int,
              let name = dic["name"] as? String,
              let description = dic["description"] as? String
        else {
            return nil
        }
        self.init(id: id, name: name, description: description)
    }
}


네트워킹 요청 중에 response 데이터가 dictionary로 내려올 때가 있는데, dictionary를 파싱하여 객체의 인스턴스를 만들 때 사용하면 유용하다.

예를 들어, 네트워킹 코드 중 아래와 같이 response로 받은 Dictionary 데이터를 SomeData로 바꾸고 싶을 때

이렇게 사용해도 되지만
아래와 같이 실패가능한 이니셜라이저를 사용하면

깔끔한 코딩이 가능하다.



[참고] The Swift Language Guide

0개의 댓글