【问题标题】:Swift Formatting Localized StringsSwift 格式化本地化字符串
【发布时间】:2015-10-30 20:48:55
【问题描述】:

我们使用 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 下载后,我不想修改字符串文件。

【问题讨论】:

    标签: string swift string-formatting nslocalizedstring localizable.strings


    【解决方案1】:

    %s 格式(带或不带位置说明符)需要一个 C 字符串,即指向以 NUL 结尾的 char 序列的指针, 而不是 Swift 字符串。

    如果您真的必须保持%s 格式,那么

    String(format: NSLocalizedString(...),
        (dist as NSString).cStringUsingEncoding(NSUTF8StringEncoding),
        (unit as NSString).cStringUsingEncoding(NSUTF8StringEncoding))
    

    应该可以。

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      相关资源
      最近更新 更多