问题描述
String(format: "unable_to_reach".localized(),name) //name is a string. I have also tried just "x"
key/value
文件中的 localize
对如下所示:
"unable_to_reach" = "Unable to reach %1$s";
现在,有时这有效,有时它会因 EXC_BAD_ACCESS
错误而崩溃。为什么是这样? %1$s 不应该用于 string
值吗?
解决方法
格式说明符 %1$s
是 %s
,其中插入了位置说明符 $1
。 %s
是以空字符结尾的 C 字符串的格式说明符。如果你改为传递一个 Swift 字符串,那么糟糕的事情就会发生。不要那样做。 (如果 Swift 字符串不包含任何空字节,则可能会导致缓冲区溢出。)
您希望 %@
(或 %$1@
,以保留位置说明符。)
有关详细信息,请参阅 string format specifiers 上的文档。