Swift 中的 NSLocalizedStrings 数组
Posted
技术标签:
【中文标题】Swift 中的 NSLocalizedStrings 数组【英文标题】:Array of NSLocalizedStrings in Swift 【发布时间】:2014-06-27 05:13:46 【问题描述】:我正在尝试将一些代码转换为 Swift,但我遇到了一些将 NSLocalizedString
s 添加到数组属性的代码。我将数组定义为String
s 的数组。正如文档所述,我正在尝试使用+=
添加对象,但我收到错误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 数组的主要内容,如果未能解决你的问题,请参考以下文章