ios - 如何为结构的所有常量编写扩展?

标签 ios swift struct

我有一个 Localization 结构体,可以帮助管理本地 key 。

struct Localization {

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

另外,我有一个名为 local 的字符串扩展名,以便为我提供来自 Localizable.strings 文件的 key 。

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

所以当我需要本地化 key 时,我会像这样使用它;

titleLabel.text = Localization.HomeHeader.local

我的问题;有没有一种方法可以执行扩展以在结构的每个常量上使用,而无需每次都调用 .local?

基本上,我想调用如下;

titleLabel.text = Localization.HomeHeader

非常感谢。

最佳答案

对您目前已实现的内容进行最小的更改。您可以简单地在字符串值之后添加本地。

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

关于ios - 如何为结构的所有常量编写扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50618174/

相关文章:

ios - 使用 xcode 布局约束将显示元素放置在另一个显示元素中

ios - DynamoDB 保存到数据库

swift - 自定义 UINavigationController : title color

ios - 多行导航栏标题

c - 使用指针对 C 中的结构数组进行排序

ios - 建立手势识别领域

ios - -[__NSDictionaryM isEqualToString :]: unrecognized selector sent to instance , 当我调用此方法时 [self.tableView endUpdates]

ios - 使用 AlertController 强制更新应用程序

C:typedef 结构。函数无法识别结构类型

C++ 将结构转换为 std::vector<char> 内存对齐