首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按字母顺序对LocalizedStringKey值进行排序?

如何按字母顺序对LocalizedStringKey值进行排序?
EN

Stack Overflow用户
提问于 2020-04-14 03:06:21
回答 1查看 162关注 0票数 1

我有一个国家的枚举,返回isoCodes,dialCodes和名字。在推断isoCodes和dialCodes时,它工作得很好,因为它们是字符串值。但是,当我试图映射名称的LocalizeStringKey,并将它们按字母顺序排列时,键只按顺序设置,而不是翻译,这是一个问题。

如何使用SwiftUI按字母顺序检索设置为LocalizedStringKey的枚举国家名称?

这就是我想要做的。

我试图以正确的顺序映射文件中的国家/地区名称的方式:(只按顺序获取本地化的键)

代码语言:javascript
复制
let countries = Country.allCases.map { $0 }

我的国家枚举:

代码语言:javascript
复制
import SwiftUI

// MARK: Country ISO3166 definition
enum Country: String, CaseIterable {

  case ad
  case ae
  case af
  case ag
  case ai
  case al
}

我的国家名称设置为变量:

代码语言:javascript
复制
// MARK: Country named from localized CountryString
extension Country {

  var name: CountryString {

    switch self {
    case .ad: return .andorra
    case .ae: return .unitedArabEmirates
    case .af: return .afghanistan
    case .ag: return .antiguaBarbuda
    case .ai: return .anguilla
    case .al: return .albania
   }
}

设置localizedStringKey的CountryString枚举:

代码语言:javascript
复制
// MARK: Country string name
enum CountryString: LocalizedStringKey {

  case andorra
  case unitedArabEmirates
  case afghanistan
  case antiguaBarbuda
  case anguilla
  case albania
}

我的翻译:

代码语言:javascript
复制
// MARK: - CountryString
"andorra" = "Andorra";
"unitedArabEmirates" = "United Arab Emirates";
"afghanistan" = "Afghanistan";
"antiguaBarbuda" = "Antiga & Barbuda";
"anguilla" = "Anguilla";
"albania" = "Albania";
EN

回答 1

Stack Overflow用户

发布于 2020-04-14 17:08:58

您可以使用字符串插值,例如:

代码语言:javascript
复制
let countries = Country.allCases.map { $0 }

let cname = countries[x].name

let tname = NSLocalizedString("\(cname)", comment: "xxxx")

然后按翻译名称的字母顺序对它们进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61194916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档