微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列出所有区域设置标识符和相应的区域文本 Swiftui

如何解决列出所有区域设置标识符和相应的区域文本 Swiftui

我想生成一个包含所有区域设置标识符的列表,供用户选择作为认值。类似于在标准设置中选择区域。

因此我想生成一个列表,其中包含例如“澳大利亚”、“奥地利”、“阿塞拜疆”、……、“也门”、“赞比亚”、“津巴布韦”。如果用户选择“澳大利亚”,我想返回 en_AU

因此需要确定 Locale 下可以使用的属性以及如何遍历它。

目前,只是想看看我是否可以返回文本,例如“澳大利亚”:

Text(Locale.localizedString(Locale.init(identifier: Locale.availableIdentifiers[0].description)))

但是返回错误

Closure containing control flow statement cannot be used with function builder 'viewbuilder'

谢谢

解决方法

似乎您正在寻找每个标识符的名称。您可以从 NSLocale 获得这些,例如:

Locale.availableIdentifiers.map {
    (id: $0,name: (NSLocale.current as NSLocale).displayName(forKey: .languageCode,value: $0) ?? "-")
}

所以你可以随心所欲地提升它们。例如,在列表中显示它们:

struct ContentView: View {
    let localeSheet: [(id: String,name: String)] = {
        Locale.availableIdentifiers.map {
            (id: $0,value: $0) ?? "-")
        }.sorted { $0.name < $1.name }
    }()

    var body: some View {
        List(localeSheet,id: \.id) {
            Text($0.name)
            Spacer()
            Text($0.id)
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。