Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] CustomStringConvertible 개념 (#description, #print 커스텀, #String(describing)) 본문

iOS 응용 (swift)

[iOS - swift] CustomStringConvertible 개념 (#description, #print 커스텀, #String(describing))

jake-kim 2024. 1. 23. 01:07

CustomStringConvertible 개념

  • 해당 프로토콜을 준수하는 인스턴스에 설명을 붙일 수 있는데 여기에 사용되는 것

https://developer.apple.com/documentation/swift/customstringconvertible

  • 프로토콜을 보면 description 하나만 프로퍼티만 소유
public protocol CustomStringConvertible {
    var description: String { get }
}
  • print를 사용할때 내부적으로 이 description을 읽어서 print하는 것
enum A {
    case a
    case b
}

print(A.a) // "a"
  • 만약 A에다가 CustomStringConvertible을 준수하면, description에 정의한 값으로 반환됨
enum A: CustomStringConvertible {
    case a
    case b
    
    var description: String {
        var str = ""
        switch self {
        case .a:
            str = "a"
        case .b:
            str = "b"
        }
        return "값은 바로? " + str
    }
}

print(A.a) "값은 바로? a"

String(describing) 개념

  • 아래처럼 String의 초기화 매개변수 describing으로 인스턴스를 받아서 문자열로 만들 수 있는데, 이것을 사용하면 CustomStringConvertible의 description의 값을 반환하는 것
let a = A.a
let description = String(describing: a)
print(description) // "값은 바로? a"
  • print()에 문자열을 넣으면 내부적으로 String(describing:)을 사용하기 때문에 String(describing:)을 따로 만들지 않고 바로 print()를 사용하는 것

* 참고

https://developer.apple.com/documentation/swift/customstringconvertible

Comments