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);

iOS中NSBundle使用小结的更多相关文章

  1. iOS中NSBundle的介绍

    bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle,cocoa提供了类NSBund ...

  2. iOS中GCD的使用小结

    http://www.jianshu.com/p/ae786a4cf3b1 本篇博客共分以下几个模块来介绍GCD的相关内容: 多线程相关概念 多线程编程技术的优缺点比较? GCD中的三种队列类型 Th ...

  3. iOS 中的 HotFix 方案总结详解

    相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...

  4. iOS中获取各种文件的目录路径的方法

    我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...

  5. IOS中无缓存的图片载入

    在IOS中,我们常用[UIImage imageNamed]方法获取图像,这种方法简便,容易理解.但是有个缺点,就是有缓存.这种方式 传人的图像的就是通过文件名方式文件名.如果,我们内存有限,我们就必 ...

  6. ios 中使用https的知识

    先看文章,这篇文章说的是使用AFNetworing进行https时的事项,十分好!http://blog.cnbang.net/tech/2416/ ios中使用https,主要就是使用NSURLCr ...

  7. iOS中NSUserDefaults详解

    NSUserDefault 作为iOS中一种轻量级数据本地化方式,简单易用,经常用于存储一些应用相关属性记录,例如图书app的背景色,进度,上次阅读的书籍及相关配置信息.NSUserDefault实质 ...

  8. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  9. IOS中获取各种文件的路径介绍及方法

    IOS中获取各种文件的目录路径的方法 技术交流新QQ群:414971585 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. docum ...

  10. iOS中使用RSA对数据进行加密解密

    RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法, 也可以用于文件签名. 本文将讨论如何在iOS中使用RSA传输加密数据. 本文环境 mac os openssl-1.0. ...

随机推荐

  1. 【BatchProgram】工作用的小工具 - 自动访问常用页面

    需求: 我需要打开很多页面,但是忘了收藏的话,每次都要重新去找一遍打开 页面很多,不是一两个了,为什么这么多?因为开发情况就是这样啊: 正式生产一个页面,UAT测试一个页面,本地调试一个页面 每日工作 ...

  2. 【MySQL】Windows-5.7.30 解压版 下载安装

    1.Download 下载 mysql官网: https://dev.mysql.com/ 找到download点击进入下载页面: https://dev.mysql.com/downloads/ 找 ...

  3. NVIDIA 创始人黄仁勋谈创建公司的最初6个月 —— 不要去写商业计划书

    地址: https://www.youtube.com/watch?v=yU3GUHDf0mk

  4. ubuntu 18.04系统下CPU实时频率查看工具 cpupower

    1.  cpupower  安装 sudo apt install linux-tools-common 2.   CPU实时频率查看 watch -n 1 sudo cpupower monitor ...

  5. baselines算法库baselines/common/input.py模块分析

    baselines算法库baselines/common/input.py模块代码: import numpy as np import tensorflow as tf from gym.space ...

  6. plsql中的常用功能整理

    1.关键字查找 2.保存登录密码 完美!

  7. java-多线程(下)

    多线程简单入门(Java)(下篇:多线程Java中的使用) 目录 一.创建多线程 二.线程的安全 三.线程的通信 一.创建多线程 在Java中,多线程的创建有4种方式. 方式一:继承于Thread类; ...

  8. Java中0.2减0.1 结果为什么不是0.1?

    double 表示这种类型的数值精度是 float 类型的两倍(有人称之为双精度数值).绝大部 分应用程序都采用double 类型.在很多情况下,float 类型的精度很难满足需求.实际上,只 有很少 ...

  9. VideoGeneration

    Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets 主要贡献:设计了一套数据清洗策略来清洗大 ...

  10. [Linux]yum下载慢!!

    有全局代理,但是yum下载特别慢,怎么办? 确保/etc/yum.conf文件中代理配置的语法正确,包括代理服务器的地址和端口号,如下所示: proxy=http://your_proxy_serve ...