본문 바로가기
Learnings/Swift & iOS

Swift Protocol - CustomStringConvertible 간단 정리

by abcdesong 2021. 2. 15.

CustomStringConvertible

자주 보이는 기본 중의 기본 프로토콜인데

제대로 써본 적이 없어서 애플 문서를 보며 짚고 넘어가려고 한다💁‍♀️

 

정의

이 프로토콜을 따르는 타입은 사용자 정의에 따른 텍스트 출력이 가능하다.

protocol CustomStringConvertible

 

사용 방법

만약 아래와 같은 struct에 CustomStringConvertible 프로토콜을 설정한다면,

struct Point {
    let x: Int, y: Int
}

 

프로토콜 채택 후, description 프로퍼티를 통해 출력 방식을 설정하면 된다.

(CustomStringConvertible 추가 시 Xcode가 알아서 필요한 stubs를 제안해줌)

extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"
    }
}

 

그러면 해당 인스턴스를 print 했을 때 설정한 방식대로 텍스트가 출력된다!

let p = Point(x: 21, y: 30)
print(p) //(21,30)

 

타입 내에서 직접 print를 호출하는 것은 추천하지 않는다고 한다.

따라서 위의 프로토콜을 따라 원하는 출력 방식을 프로퍼티로 저장해 놓고, print는 외부에서 호출하는 습관을 들이자!

 

참고

댓글