Iphone,从MonoTouch获取国家列表

是否有可能复制MonoTouch中的代码?

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

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

可悲的是,快速查看显示displayNameForKey:value:是(从MonoMac)绑定缺less的(目前为4.2.x)。 我会考虑实现它,并将更新此条目完成后。

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

  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玩得开心!

ps我会更新绑定,所以它将被包含在未来版本的MonoTouch中更适合的 API 😉

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

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