Swift 中的 NSLocalizedStrings 数组

Posted

技术标签:

【中文标题】Swift 中的 NSLocalizedStrings 数组【英文标题】:Array of NSLocalizedStrings in Swift 【发布时间】:2014-06-27 05:13:46 【问题描述】:

我正在尝试将一些代码转换为 Swift,但我遇到了一些将 NSLocalizedStrings 添加到数组属性的代码。我将数组定义为Strings 的数组。正如文档所述,我正在尝试使用+= 添加对象,但我收到错误Could not find an overload for '+=' that accepts the supplied arguments

我确定这是一个简单的错误,但我尝试了几种不同的组合(将 as String[] 附加到末尾,或在 var 名称之后,或将 = [] 附加到声明等)并且无法获得它工作。希望能对发生的事情进行一些解释。

//Property:
var localizedTitles: String[]

//In init:
localizedTitles += [NSLocalizedString("My String", tableName: nil, bundle: nil, value: "My String", comment: "")]

【问题讨论】:

NSLocalizedString() 是一个函数,而不是一个类型。 谢谢,更新问题 【参考方案1】:

我看到三个问题/cmets:

    出于某种原因,NSLocalizedString 的 bundle 参数不是可选的。您必须为其提供一个实际的捆绑包。

    您必须先初始化数组,然后再尝试追加。

    您可以将数组定义为字符串数组,因为这是 NSLocalizedString 返回的内容。

试试这个(我添加了一些换行符以使其在这种格式下更具可读性):

var localizedTitles : [String] = []
localizedTitles += NSLocalizedString(
    "My String",
    tableName: nil,
    bundle: NSBundle.mainBundle(),
    value: "My String",
    comment: ""
    )

但是因为有些参数有默认值,所以你可以简单地这样做:

var localizedTitles : [String] = []
localizedTitles += NSLocalizedString("My String", value: "My String", comment: "")

【讨论】:

成功了。有趣的是,文档说如果没有提供bundle 的默认值。 @Joey Ya,我认为这是指参数具有默认参数的事实,因此您可以将它们排除在调用之外。我更新了我上面的答案,举了一个例子,把它们排除在外。

以上是关于Swift 中的 NSLocalizedStrings 数组的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

swift: Swift 中的 SnapKit 不起作用

swift中的 isKindofClass

swift Swift中的变量

swift Swift中的数组

swift SWIFT中的变量