iOS開發-功能篇-國際化|NSUserDefaults,iosnsuserdefaults

來源:互聯網
上載者:User

iOS開發-功能篇-國際化|NSUserDefaults,iosnsuserdefaults

/*=========================================軟體國際化================================================*/

1.簡介:

    軟體國際化主要是在軟體中添加多種語言,以實現不同國家的人群需求。

    主要的應用方式有兩種:1.根據系統的語言環境自動進行切換;2.人為的添加按鈕等進行主動切換。

    目前實現的主要方法有兩種:1.Xcode可視化介面添加Localizations的操作。2.利用NSLocalizedString配合genstrings進行實現。這裡主要介紹第二種方法。

2.實現:

    2.1 NSUserDefaults:適合儲存輕量級的本機資料,比如要儲存一個登陸使用者名稱、密碼、語言環境之類的,使用NSUserDefaults是首選。

    NSDictionary* defaultsee = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

    NSLog(@"Defaults: %@", defaultsee);//利用字典查看一下所有NSUserDefaults的設定

    2.2 NSLocalizedString:基礎的國際化函數,查看一下定義

#define NSLocalizedString(key, comment) \    [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]//key-value,comment:注釋

    對上述函數進行拓展自訂,語言套件存放在en.lproj(英),zh-Hans.lproj(漢)等,以key-value方式進行擷取。

#define CustomLocalizedString(key, comment) \    [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:@"" table:nil]//利用key取出相應地object

    2.3 利用genstrings產生相應語言的.lproj語言檔案Localizable.strings

    genstrings -o ~/.../zh-Hans.lproj *.m//-o 產生的目標檔案夾,掃描目前的目錄下的所有.m檔案

    genstrings -o ~/.../en.lproj *.m

    2.4 然後在相應地Localizable.strings檔案中添加"登陸" = "login";等

 [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:appLanguage];//添加語言檔案    NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];//擷取系統當前的語言    NSString *currentLanguage = [array objectAtIndex:0];

注意:1.產生的Localizable.strings檔案名稱沒有標識,所以在組建檔案處可以加檔案夾或者添加註釋區分

    2.一定要掃描所有需要國際化的.m檔案

    3.NSUserDefaults只是起到儲存屬性值和路徑作用,利用類似字典方式擷取資料

 

/*===========================================NSUserDefaults詳解==========================================*/

1.簡介:NSUserDefaults對象是用來儲存應用程式相關的喜好設定,配置資料等等,主要用來恢複基礎設定,記錄密碼和系統的一些語言和鍵盤等預設資訊。資料則存放在<UUID for your App>\Library\Preferences\<your App"s bundle ID>.plist的檔案中

2.功能:

    2.1 NSUserDefaults只能存放5種資料格式:NSString, NSNumber, NSDate, NSArray, NSDictionary.

    2.2 查看當前所有的配置資料:

 NSDictionary* defaultsee = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];    NSLog(@"Defaults: %@", defaultsee);

    2.3 單例模式: +(NSUserDefaults *)standardUserDefaults//擷取當前類的執行個體

    2.4 key-value模式:

 -(void)setObject:(id)value forKey:(NSString *)defaultName;//設定資料    - (id)objectForKey:(NSString *)defaultName;//取資料

    2.5 因為NSUserDefaults是持久化資料存放區方法,重啟裝置並不能將設定在裡面的資料變更,只能通過兩種方式進行刪除:

    1.刪除沙箱(重裝)

       2.-(void)removeObjectForKey:(NSString *)defaultName;//函數方法

    2.6 其他:- (NSDictionary *)dictionaryRepresentation;//利用字典進行配置查看

               - (BOOL)synchronize;//資料同步

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.