在 Swift 中带有变量的 NSLocalizedString 不起作用
Posted
技术标签:
【中文标题】在 Swift 中带有变量的 NSLocalizedString 不起作用【英文标题】:NSLocalizedString with variables in Swift doesn't work 【发布时间】:2020-07-04 10:37:49 【问题描述】:我必须在 if 中找到这些字符串,它使用 secondsRimanenti 变量执行倒计时。
if secondiRimanenti > 1
self.statoRicerca = "Cerco sismometri disponibili... \(secondiRimanenti) secondi"
else
self.statoRicerca = "Cerco sismometri disponibili... \(secondiRimanenti) secondo"
self.tableView.reloadData()
self.timerStart()
secondiRimanenti(剩余秒数)的值从 5 秒开始下降到 0 秒 这是错误:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x4)
这两种方法我都试过了:
let appSec = String(format: NSLocalizedString("Cerco sismometri disponibili... %@ secondi", comment: ""), secondiRimanenti)
和
let appSec = String.localizedStringWithFormat(NSLocalizedString("Cerco sismometri disponibili... %@ secondi", comment: ""), secondiRimanenti)
我该如何解决? 谢谢!!
【问题讨论】:
你能在这个sn-p之前放一个断点吗?secondiRimanenti
的值是多少?顺便说一句,如果您想本地化复数,推荐的方法是使用 stringsdict
secondiRimanenti(剩余秒数)的值从 5 秒开始下降到 0 秒
我知道它应该保持一个介于 0...5 之间的值,但你能通过断点验证它实际上确实吗?跨度>
基本上是***.com/questions/28620794/…的副本。
【参考方案1】:
您使用了错误的格式说明符。
%@
用于对象,Int
(假设secondiRimanenti
是 Int
)是%ld
。
let appSec = String(format: NSLocalizedString("Cerco sismometri disponibili... %ld secondi", comment: ""), secondiRimanenti)
【讨论】:
以上是关于在 Swift 中带有变量的 NSLocalizedString 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中带有 Branch.io 的 Facebook AppInvites 示例