iOS/Swift

let title = "\(String(describing: model.title)) + 방문"여기서 왜 String(describing으로 감싼거야?그냥 "\(model.title) + 방문" 하면 안돼?

밤새는 탐험가89 2024. 10. 5. 11:12

String(describing:)로 감싸는 이유는 주로 Optional 타입의 값을 안전하게 출력하려고 할 때 사용됩니다.

만약 model.title이 Optional<String> 타입이라면, 직접 "\(model.title)"으로 문자열 보간을 시도할 경우 Optional("value")와 같이 출력될 수 있습니다. 반면, String(describing: model.title)를 사용하면 값이 있을 경우 그 값을, 없을 경우 "nil"을 출력하게 됩니다.

차이점:

  • "\(model.title)": model.title이 nil일 경우 "Optional(nil)"이라는 문자열이 출력됩니다.
  • "String(describing: model.title)": model.title이 nil일 경우 "nil"이 출력됩니다.

따라서, model.title이 Optional 타입일 때는 String(describing:)을 사용하는 것이 예상치 못한 Optional(...) 출력 형식을 피하는 방법입니다.

 

var modelTitle: String? = "Example"

// String(describing:) 사용
let title1 = "\(String(describing: modelTitle)) + 방문"  // "Example + 방문"

// 그냥 사용
let title2 = "\(modelTitle) + 방문"  // "Optional(\"Example\") + 방문"