gpt4 book ai didi

ios - SWIFT 使用 Stringsdict 和复数规则

转载 作者:行者123 更新时间:2023-11-28 11:40:10 30 4
gpt4 key购买 nike

在我的 iOS 应用程序中,我在其中一个屏幕上使用了一个标签,标签上的文本应该根据对象的数量而变化:一个苹果、两个苹果S 等等。我创建了 Localizable.stringdict 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>searches</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@search_count@</string>
<key>search_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>s</string>
<key>one</key>
<string>остался %s поиск</string>
<key>many</key>
<string>осталось %s поиска</string>
<key>other</key>
<string>осталось %s поиска</string>
</dict>
</dict>

稍后在 viewController 类中,我创建了一个函数

  private func searches(_ count: UInt) {
let format: String = NSLocalizedString("searches", comment: "")
let result: String = String.localizedStringWithFormat(format, count)
print(result)
}

并在 viewDidLoad 中调用这个函数。

应用程序在开始时崩溃并出现错误 Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

Debbuger 指示创建Result 的行。据我了解,问题是未创建 Format

如何解决这个问题?

最佳答案

您的字典将“s”指定为字符串格式说明符,即用于 C 字符串。对于 UInt(作为 Foundation C 类型的 NSUInteger)它应该是“lu”(比较 String Format Specifiers ):

<key>NSStringLocalizedFormatKey</key>
<string>%#@search_count@</string>
<key>search_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>lu</string>
<key>one</key>
<string>остался %lu поиск</string>
<key>many</key>
<string>осталось %lu поиска</string>
<key>other</key>
<string>осталось %lu поиска</string>
</dict>

关于ios - SWIFT 使用 Stringsdict 和复数规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53913812/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com