如何为struct的所有常量编写扩展?

时间:2018-05-31 06:41:38

标签: ios swift struct

我有一个Localization结构,它有助于管理本地密钥。

struct Localization {

//Home
static let HomeHeader         =   "Home_Header"
static let HomeStatusActive   =   "Home_Status_Active"
static let HomeStatusDelayed  =   "Home_Status_Delayed"
}

另外,我有一个名为local的字符串扩展名,它为我提供了Localizable.strings文件中的密钥。

extension String {
    var local : String {
        return LocalizationManager.getLocalizedString(key: self)
    }
}

因此,当我需要本地化密钥时,我会像这样使用它;

titleLabel.text = Localization.HomeHeader.local

我的问题;有没有办法在不每次调用.local的情况下执行扩展以在每个struct的常量上使用?

基本上,我想打电话如下;

titleLabel.text = Localization.HomeHeader

非常感谢。

2 个答案:

答案 0 :(得分:4)

对您迄今为止实施的内容进行微小的更改。您可以简单地在字符串后添加本地值。

struct Localization {

    //Home
    static let HomeHeader         =   "Home_Header".local
    static let HomeStatusActive   =   "Home_Status_Active".local
    static let HomeStatusDelayed  =   "Home_Status_Delayed".local
}

extension String {
    var local : String {
        return LocalizationManager.getLocalizedString(key: self)
    }
}

然后你就可以像:

一样使用它
titleLabel.text = Localization.HomeHeader

答案 1 :(得分:1)

请查看以下内容可能对您有所帮助

您可以将所有本地化字符串保存在一个位置

struct ConstantsLocalized {
    static var key_loading: String {
        return "key_loading".localized()
    }
    static var key_placeholder_email: String {
        return "key_placeholder_email".localized()
    }
}

您可以使用ConstantsLocalized.key_loading

访问它

修改

我需要使用此方法增加一个优势,如果你有应用程序本地化意味着用户可以从应用程序自己更改语言,那么它是最好的解决方案,因为你可以每次都获得本地化字符串

希望它有用