0

我可以轻松地将短区域代码 (en_US) 更改为更长的字符串...但是是否有一种简单的方法也可以朝另一个方向移动?

[displayInEnglish displayNameForKey:NSLocaleIdentifier value:regionCountryCode];

“en_US”变为“英语(美国)”。

“英语(美国)”变为“en_US”。

我目前将短区域代码存储在数据库中......但是当我显示一些汇总结果时......我需要向用户显示较长的字符串。

还是我应该将较长的字符串直接存储在数据库中......甚至不用担心以后“转换”它们?

我试图显示每个国家的“美元总数”。

如果您是用户...您更可能希望看到哪个(对于货币总列表)?

  • “法国”总数
  • “法国”总数
  • A“法国(法国)”总计
  • “fr_Fr”总数?
4

2 回答 2

1

一种选择是自己构建地图并存储它。你有你想要的所有代码,你可以将它们转换成更长的字符串,所以只需存储更长的字符串 => 代码映射:

NSMutableDictionary * nameToCode = [NSMutableDictionary dictionary];
NSArray * codes = [NSArray arrayWithObjects:@"en_US", @"en_GB", @"fr_FR", @"pt_PT"];
NSLocale * english = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];

for (NSString * code in codes) {
  NSString * displayName = [english displayNameForKey:NSLocaleIdentifier value:code];
  [nameToCode setObject:code forKey:displayName];
}

然后你可以这样做:

NSString * code = [nameToCode objectForKey:@"French (France)"];
于 2010-05-20T20:16:47.187 回答
0

我同意大卫(他打字比我快):建立一个查找表。简单的。便宜的。快的。如果您知道您已经调用了 displayInEnglish,则将其构造为缓存,而不是构建一个包含不必要条目的大表。

于 2010-05-20T20:26:03.963 回答