iOS应用开发中使用NSLocale类实现对象信息的本地化

如何正确地格式化时间

这也是我们这两天遇到的问题,跟用户几经沟通之后,终于抓到log,发现问题竟然是格式化导致的。怎么解决呢?

这个时候NSLocale的重要性就体现出来了。NSLocale作为大家都不常用的一个类,NSLocale类是将与国家和语言相关的信息进行简单的组合,包括货币、语言、国家等的信息。

所以很简单,我们把dateFormatter的locale属性改一下即可解决这个问题。将下面代码放在dateFormatter初始化之后:

代码如下:

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
dateFormatter.locale = usLocale;

看看问题解决没有,编译一下:

2015-07-07 22:20:08.411 TestDemo[6769:1556968] 2015-07-07 22:20:08

果然,问题得到完美解决了。

NSLocale主要用法简介
用来格式化时间只是NSLocale的一个小技巧,既然谈到NSLocale,我们就来简单了解一下:

代码如下:

+ ISOCountryCodes// 所有的ISO定义的国家地区编码
+ ISOCurrencyCodes// 所有的ISO定义的货币编码
+ ISOLanguageCodes// 所有ISO定义的语言编码

以上我们可以用NSLog打印出来看一看。

NSLocale所具有的功能还有很多:

1.获取系统本地化信息


代码如下:

// 获取系统所有本地化标识符数组列表
[NSLocale availableLocaleIdentifiers] ;

2.获取当前系统设置语言的标识符


代码如下:

[[NSLocale currentLocale] localeIdentifier];

3.获取本地化对象的具体内容


代码如下:

NSLocale *local = [NSLocale currentLocale];

key值参见NSLocale Calendar Keys

4.获取当前语言的排版方向和字符方向


代码如下:

[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];

5.获取用户的语言偏好设置列表,该列表对应于IOS中Setting>General>Language弹出的面板中的语言列表。

代码如下:

[NSLocale preferredLanguages]

第一个元素即为当前用户设置的语言

6.监听用户本地化设置的消息


代码如下:

[NSNotificationCenter defaultCenter] addObserver:self                                         selectorselector(localChangedHandler                                             name:NSCurrentLocaleDidChangeNotification object:nil];

7.以本地化方式获取国际化信息的显示名称


代码如下:

NSLocale *curLocal = [[NSLocale alloc]initWithLocaleIdentifier"zh-Hans"] ;

(0)

相关推荐

  • iOS创建对象的不同姿势详解

    前言 在写 iOS 代码的时候,怎么样去 new 一个新对象出来,都有一些讲究在里面.使用不同的姿势去创建对象,对后期维护所造成的影响会存在细微的差别. init 创建 在之前一篇分析 iOS 代码耦合的文章中,提到过当我们给一个对象的 property 赋值的时候,通过 init 方法传入参数来初始化 property 会让我们的代码更可靠. 有些人在定义带 property 的 class 的时候,会这样定义: @interface User : NSObject @property (no

  • iOS对象指针和基础数据类型的强转详解

    本文主要介绍了iOS中对象指针和基础数据类型如何进行强转,下面话不多说,直接来看示例详解. 一.对象指针的强转: UIView *view = [UIView new];//new一个UIView类的对象 UILabel *label = (UILabel *)view;//强转成UILabel指针 label.text = @"123";//给label的text属性赋值(调用label的setText方法) 上述代码会产生崩溃,崩溃信息如下: -[UIView setText:]:

  • IOS 开发之对象为空的判断(nil、null)详解

    IOS 开发之对象为空的判断(nil.null)详解 前言: 在开发中,会遇到很多空的情况,有时候取得对象(null),还有时候会得到<null>的情况,我们需要判断是否为空,进行return: id result; // 针对(null)这种情况 if(result == nil) return; // 针对<null>的情况 if([result isEqual:[NSNull null]]) return; 前者的判断,我们用的比较频繁,但后者,用的比较少,一般赋值给nil之

  • iOS 对象属性详细介绍

    iOS 对象属性 oc对象的一些属性: retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained 下面来分别讲讲各自的作用和区别: retain,计数器加1, (增加一个指向内存的指针) 对应release(计数器-1) setter 方法对参数进行 release 旧值再 retain 新值,所有实现都是这个顺序 - (void)setBackView:(UIView *)backView { if (_bac

  • iOS应用开发中使用NSLocale类实现对象信息的本地化

    如何正确地格式化时间 这也是我们这两天遇到的问题,跟用户几经沟通之后,终于抓到log,发现问题竟然是格式化导致的.怎么解决呢? 这个时候NSLocale的重要性就体现出来了.NSLocale作为大家都不常用的一个类,NSLocale类是将与国家和语言相关的信息进行简单的组合,包括货币.语言.国家等的信息. 所以很简单,我们把dateFormatter的locale属性改一下即可解决这个问题.将下面代码放在dateFormatter初始化之后: 复制代码 代码如下: NSLocale *usLoc

  • iOS App开发中通过UIDevice类获取设备信息的方法

    UIDevice提供了多种属性.类函数及状态通知,帮助我们全方位了解设备状况.从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息.UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等.其中大部分属性都对开发工作具有积极的辅助作用.下面的代码简单的使用UIDevice获取手机属性. 简单示例:设备相关信息的获取    NSString *strName = [[UIDevice currentDevice] name];   

  • iOS App开发中使用设计模式中的单例模式的实例解析

    一.单例的作用 顾名思义,单例,即是在整个项目中,这个类的对象只能被初始化一次.它的这种特性,可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值.UIApplication.NSUserDefaults等都是IOS中的系统单例. 二.单例模式的两种写法 1,常用写法 #import "LGManagerCenter.h" static LGManagerCenter *managerCenter; @implementation LGManagerCe

  • Android开发中日期工具类DateUtil完整实例

    本文实例讲述了Android开发中日期工具类DateUtil.分享给大家供大家参考,具体如下: /** * 日期操作工具类. * @Project ERPForAndroid * @Package com.ymerp.android.tools * @author chenlin * @version 1.0 */ @SuppressLint("SimpleDateFormat") public class DateUtil { private static final String

  • 从C语言中读取Python 类文件对象

    问题 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案 要读取一个类文件对象的数据,你需要重复调用 read() 方法,然后正确的解码获得的数据. 下面是一个C扩展函数例子,仅仅只是读取一个类文件对象中的所有数据并将其输出到标准输出: #define CHUNK_SIZE 8192 /* Consume a "file-like" object and write bytes to stdout */ static PyObj

  • iOS App开发中UIViewController类的使用教程

    一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有条有理的展示在我们的View层上.iOS中的UIViewController是UIKit框架中最基本的一个类.从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础.基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑.这里旨在讨论UIViewController的生命周期和属性方法,在最基础的东西上,往往会

  • iOS App开发中扩展RCLabel组件进行基于HTML的文本布局

    iOS系统是一个十分注重用户体验的系统,在iOS系统中,用户交互的方案也十分多,然而要在label中的某部分字体中添加交互行为确实不容易的,如果使用其他类似Button的控件来模拟,文字的排版又将是一个解决十分困难的问题.这个问题的由来是项目中的一个界面中有一些广告位标签,而这些广告位的标签却是嵌在文本中的,当用户点击文字标签的位置时,会跳转到响应的广告页. CoreText框架和一些第三方库可以解决这个问题,但直接使用CoreText十分复杂,第三方库多注重于富文本的排版,对类似文字超链接的支

  • iOS应用开发中使用Auto Layout来适配不同屏幕尺寸

    简介 Auto Layout 是苹果在 Xcode 5 (iOS 6) 中新引入的布局方式,旨在解决 3.5 寸和 4 寸屏幕的适配问题.屏幕适配工作在 iPhone 6 及 plus 发布以后变得更加重要,而且以往的"笨办法"的工作量大幅增加,所以很多人开始学习使用 Auto Layout 技术. 初体验 0. 开发环境 本系列文章的开发环境为: OS X 10.10.3 Xcode Version 6.3.1 (6D1002) 1. 新建应用 新建一个 Single View Ap

  • iOS应用开发中视图控件UIWindow的基本使用教程

    一.简单介绍 iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例.应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来.之后我们很少需要再次引用它.UIWindow对象是所有UIView的根,管理和协调的应用程序的显示.一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件. 在IOS中,UIWindow对象并没有像windows应用程序中常见的关闭框或标题栏这样

  • iOS App开发中使cell高度自适应的黑魔法详解

    在使用 table view 的时侯经常会遇到这样的需求:table view 的 cell 中的内容是动态的,导致在开发的时候不知道一个 cell 的高度具体是多少,所以需要提供一个计算 cell 高度的算法,在每次加载到这个 cell 的时候计算出 cell 真正的高度. 在 iOS 8 之前 没有使用 Autolayout 的情况下,需要实现 table view delegate 的 tableView(tableView: UITableView, heightForRowAtInde

随机推荐