在 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 示例

swift Swift中带有协议的构建器模式示例

SWIFT 中带有自定义参数的发布请求

Swift 3 中带有异步调用的 CompletionHandler

Swift 中带有选择器的协议扩展

swift2.0中带有UIKeyboard的UIStackview