You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确实现LocalizedStringKey的字符串插值(String Catalog场景)

解决LocalizedStringKey字符串插值显示异常的问题

问题原因

直接将LocalizedStringKey类型的值放入字符串插值("\(...)")中时,Swift会调用该类型的默认description方法,输出结构体的调试信息(如LocalizedStringKey(key: ...)),而非对应的本地化字符串。

正确实现方式

方式一:返回本地化后的String类型

修改localizedString()方法,直接返回已完成本地化的String,插值时会直接显示正确内容:

enum A {
    case a1
    case a2

    func localizedString() -> String {
        switch self {
        case .a1:
            return String(localized: "aa")
        case .a2:
            return String(localized: "bb")
        }
    }
}

使用时直接插值:

"\(a.localizedString()) · \(b.localizedString())"

方式二:在SwiftUI中使用Text组件拼接(推荐)

如果是SwiftUI视图场景,无需手动拼接字符串,直接用Text组件的拼接功能,每个Text会自动处理LocalizedStringKey的本地化:

Text(a.localizedString())
    + Text(" · ")
    + Text(b.localizedString())

注意:需确保" · "已在String Catalog中配置对应本地化条目,或直接使用已本地化的分隔符。

方式三:显式转换LocalizedStringKey为String

若必须保留localizedString()返回LocalizedStringKey的设计,可在插值时显式调用String(localized:)转换:

"\(String(localized: a.localizedString())) · \(String(localized: b.localizedString()))"

内容的提问来源于stack exchange,提问作者user1385809

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:11:09