R.Swift - 无法调用非函数类型 StringResource 的值

R.Swift - Cannot call value of non-function type StringResource

任何有使用经验的人 R.Swift 谁能提供帮助?我正在尝试在我们使用大量 R.string.localizable 的项目中整合代码,这样它们的出现就不会散布在整个代码中,这样字符串(和图像)就不需要一次又一次地重新实例化。为此,我想添加静态惰性结构,如下所示:

private struct Text
{
    static let text1 = R.string.localizable.text1()
    static let text2 = R.string.localizable.text2()
    static let text3 = R.string.localizable.text3()
    static let text4 = R.string.localizable.text4
}

这适用于简单的字符串,但是当任何这些字符串资源需要参数时就会出现问题,例如 text4 的情况,因此被声明为 String Resource 而不是 String:

R.generated.swift:

static let text4 = Rswift.StringResource(key: "some.username", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "ja"], comment: nil)

当需要 text4 并且我尝试通过我的文本结构使用它时,我收到错误:

_userNameLabel?.text = Text.text4(userName, String.Empty)

错误:Cannot call value of non-function type StringResource

有没有办法让它工作?

您可以使用

static func text4(_ value: Int) -> String {
     R.string.localizable.text4(value)
}

并调用 Text.text4(10)