我们正在使用OneSky来翻译字符串。我们在字符串文件中使用位置说明符。我遇到的问题是在字符串中使用%s时。
我有一个字符串:"dist_unit_mask" = "%1$s %2$s";
我从Localization.strings
文件中读取并尝试格式化:String(format: NSLocalizedString(@"dist_unit_mask", comment: @"Distance and Units"), dist, unit)
这会导致应用程序崩溃,但是当我将字符串更改为"dist_unit_mask" = "%1$@ %2$@";
时,应用程序不会崩溃。使用$s
代替%@
时,可能导致应用崩溃的原因是什么?从OneSky下载后,我不想修改字符串文件。
答案 0 :(得分:3)
%s
格式(带或不带位置说明符)需要a
C string ,即指向NUL终止的char
序列的指针,
而不是Swift字符串。
如果你真的必须保持%s
格式,那么
String(format: NSLocalizedString(...),
(dist as NSString).cStringUsingEncoding(NSUTF8StringEncoding),
(unit as NSString).cStringUsingEncoding(NSUTF8StringEncoding))
应该有用。