iOS 응용 (swift)
[iOS - swift] CustomStringConvertible 개념 (#description, #print 커스텀, #String(describing))
jake-kim
2024. 1. 23. 01:07
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