ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SwiftUI: ‘appendInterpolation’ is deprecated 문제 해결하기
    공부/Swift(프로그래밍 언어) 2026. 1. 28. 23:57
    반응형

    Swift 6으로 업그레이드한 이후, SwiftUI에서 여러 개의 warning이 발생했습니다. 그중 대표적인 내용은 다음과 같습니다.

    'appendInterpolation' is deprecated: Localized string interpolation produces an unlocalized, debug description for this type of value. Use a type supported by LocalizedStringKey.StringInterpolation or initialize a LocalizedStringResource instead with an interpolated value that conforms to CustomLocalizedStringResourceConvertible.

    'appendInterpolation'은 더 이상 사용되지 않습니다. 지역화된 문자열 보간은 이 값 유형에 대해 지역화되지 않은 디버그 설명을 생성합니다. LocalizedStringKey.StringInterpolation에서 지원하는 형식을 사용하거나 CustomLocalizedStringResourceConvertible을 준수하는 보간된 값으로 LocalizedStringResource를 초기화하십시오.

     

     

    이 warning이 발생하는 주된 이유는 Text의 주 파라미터 값이 일반 String이 아니라 LocalizedStringKey 였는데, Swift 6 부터 이것을 엄격하게 검사하기 때문입니다.

    이전부터 이미 Text에 입력된 스트링이 로컬라이징 키인 경우, 로컬라이즈된 텍스트로 표시되고 있었습니다. 하지만 로컬라이징 키를 입력하지 않은 경우 텍스트를 그대로 출력하도록 되어 있었고 이전까지는 이러한 방법이 용인되고 널리 쓰이고 있었습니다.

    그러나 Swift 6부터는 Text는 다국어 지원을 기본 전제 하여, 보간(interpolation)에 사용되는 값이 String 이거나 CustomLocalizedStringResourceConvertible을 준수하지 않는 타입일 경우 deprecated warning이 발생합니다.

    이 warning을 해결하기 위해 아래와 같은 몇 가지 방법을 사용할 수 있습니다. (방법은 더 많지만, 여기서는 대표적인 것들만 소개합니다)

     


     

    1. verbatim 추가

    verbatim을 추가하는 방식입니다.

    verbatim(말[글자] 그대로(의), (=word for word)라는 뜻)로컬라이즈가 불가능한 문자열임을 명시하는 것으로, 비교적 강한 대응 방법입니다. 입력한 내용을 그대로 출력하며, 로컬라이징 키에 해당하는 값이 있어도 그대로 입력한 키를 출력합니다.

    다국어 지원이 필요 없는 경우라면 바로 사용할 수 있는 방법입니다.

    /// verbatim 추가 (localizable 아님)
    Text(verbatim: "실패: \(error).")
      .foregroundStyle(.red)

     

    장점

    • 문자열을 직접 String으로 처리
    • 다국어 번역이 적용되지 않음 (의도된 경우 오히려 장점)

     

     

    2. String으로 명시적 변환 (가장 일반적인 방법)

    보간에 사용되는 값을 String으로 직접 변환하는 방식입니다.

    Text("실패: \(String(describing: error)).")
      .foregroundStyle(.red)

     

    장점

    • deprecated warning이 발생하지 않음
    • 여전히 localization 지원 가능
    • 어떤 Error 타입이든 안전하게 표시 가능

     

    3. LocalizedStringResource 사용 (다국어 완전 지원)

    LocalizedStringResource로 한 번 더 감싸는 방법입니다.

    Text(
      LocalizedStringResource(
        "실패: \(String(describing: error))."
      )
    )
    .foregroundStyle(.red)

    String(describing: error)를 사용하되, 전체 문자열을 LocalizedStringResource로 감싸면 문장 전체를 로컬라이즈 대상으로 만들 수 있습니다.

    Localized.strings에 다음과 같은 키값이 있다면

    "실패: %@." = "Failed: %@.";

    SwiftUI는 런타임에 "실패: %@." 를 key로 삼고, %@ 위치에 String(describing: error) 결과를 삽입합니다. \(String(describing: error))를 %@로 인식합니다.

     

    장점

    • 보다 완전한 다국어 지원 가능
    • 문자열을 중앙에서 일괄 관리하기 쉬움

     

    최근 Swift 및 iOS 업데이트가 매우 잦아졌기 때문에, iOS 대응을 제대로 하지 않으면 이런 warning이나 문제들이 쉽게 발생할 수 있습니다.

    반응형
Designed by Tistory.