ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iOS中NSBundle使用小结

2021-05-18 10:36:00  阅读:205  来源: 互联网

标签:currLanguage filePath iOS bundle NSBundle NSString mainBundle 小结


  bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,文本文件,属性列表,语言包,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle。

  1、通过使用下面的方法得到程序的main bundle

  NSBundle *myBundle = [NSBundle mainBundle];

  2、使用NSBundle加载nib文件

  BOOL successful = [NSBundle loadNibNamed:@"About" owner:someObject];

  self.titleView = [[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([CCNearbyTitleView class]) owner:self options:nil] firstObject];

  3、使用NSBundle加载xml文件

  NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"]; 

  NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];

   4、使用NSBundle加载图片文件

  NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"AppIcon" ofType:@"png"]; 

  UIImage *image=[UIImage imageWithContentsOfFile:filePath];

  //同理这个[UIImage imageNamed:@"AppIcon"];

  5、 使用NSBundle加载本地语言包

  中文

  "change_language" = "悄悄是别离的笙箫,沉默是今晚的康桥";

  "button" = "切换语言";
  英文:
  "change_language" = "Quietness is my farewell music, silence is Cambridge tonight";
  "button" = "Change Language";

  NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *currLanguage = [def valueForKey:@"LocalLanguageKey"];

    if(!currLanguage){

            NSArray *preferredLanguages = [NSLocale preferredLanguages];

        

            currLanguage = preferredLanguages[0];

        

            if ([currLanguage hasPrefix:@"en"]) {

                currLanguage = @"en";

            }else if ([currLanguage hasPrefix:@"zh"]) {

                currLanguage = @"zh-Hant";

            }else currLanguage = @"en";

        

            [def setValue:currLanguage forKey:@"LocalLanguageKey"];

            [def synchronize];

        }

  NSString *path = [[NSBundle mainBundle] pathForResource:[[NSUserDefaults standardUserDefaults] objectForKey:@"LocalLanguageKey"] ofType:@"lproj"];

      NSBundle* bundle = [NSBundle bundleWithPath:path];

      //此处是上面赋值的bundle

      NSString *str = [bundle localizedStringForKey:@"change_language" value:nil table:@"MultiLanguage"];

      NSString *buttonStr = [bundle localizedStringForKey:@"button" value:nil table:@"MultiLanguage"];

  NSLog(@"wenzi:%@,%@",str,buttonStr);

标签:currLanguage,filePath,iOS,bundle,NSBundle,NSString,mainBundle,小结
来源: https://www.cnblogs.com/bigant9527/p/14779775.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有