【问题标题】:Iphone, Obtaining a List of countries from MonoTouchIphone,从 MonoTouch 获取国家列表
【发布时间】:2011-09-28 01:56:02
【问题描述】:

是否可以在 MonoTouch 中复制 here 中的代码?

这是我迄今为止尝试过的:

foreach(string countryCode in NSLocale.ISOCountryCodes){
 // How to convert this objective-c code to c#?
 // [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode]
}

【问题讨论】:

  • 似乎有可能,有一个 NSLocale 类等等......你试过什么?您是否遇到特定错误?
  • 问题已更新,目前包含 c# 代码
  • 是的 - 我开始输入答案(知道 C#,但不是 Mono 专家),我得到了你。文档看起来丢失了,找不到如何将国家代码翻译成友好的描述字符串。在您迭代时,将描述(如果您弄明白的话)添加到 List 并对其进行排序。

标签: c# iphone ios xamarin.ios nslocale


【解决方案1】:

遗憾的是,快速浏览显示 displayNameForKey:value: 在 MonoTouch(和 MonoMac)绑定中缺失(当前为 4.2.x)。我将研究实现它,并在完成后更新此条目。

更新:解决缺失绑定的源代码

    public void DisplayCountryCodeNames ()
    {
        NSLocale current = NSLocale.CurrentLocale;
        IntPtr handle = current.Handle;
        IntPtr selDisplayNameForKeyValue = new Selector ("displayNameForKey:value:").Handle;
        foreach (var countryCode in NSLocale.ISOCountryCodes) {
            using (var key = new NSString ("kCFLocaleCountryCodeKey")) {
                using (var nsvalue = new NSString (countryCode)) {
                    string ret = NSString.FromHandle (MonoTouch.ObjCRuntime.Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr (handle, selDisplayNameForKeyValue, key.Handle, nsvalue.Handle));
                    Console.WriteLine ("{0} -> {1}", countryCode, ret);
                }
            }
        }
    }

根据您的喜好调整并享受 MonoTouch 的乐趣!

附言我将更新绑定,以便将其包含在 MonoTouch 的未来版本中,以更正确 API ;-)

【讨论】:

  • 顺便说一句,正在考虑实施国家/地区选项列表,以前有人这样做过吗?
  • 这应该是另一个问题(所以更多的人会阅读它而不是这个评论)
  • 此绑定是否曾添加到 MonoTouch?我目前需要获取货币的名称(NSLocaleCurrencyCode),但是上面的代码,即使是“kCFLocaleCurrencyCodeKey”,对我也不起作用。
【解决方案2】:

是的,这当然是可能的。 MonoTouch 将 iOS API 封装在 C# 类中,以便您可以在 C# 中执行您在 Objective-C 中可以执行的任何操作。不幸的是,您必须下载试用版才能获得文档。我想代码看起来像这样:

foreach(string countryCode in NSLocale.ISOCountryCodes){
  string CountryName = NSLocale.displayNameForKey(NSLocaleCountryCode, countryCode);
}

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2013-10-11
    • 1970-01-01
    • 2010-10-04
    • 2014-08-10
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多