文档章节

IOS 之 NSBundle 使用

广州英趣科技
 广州英趣科技
发布于 2013/02/03 00:00
字数 464
阅读 397
收藏 12

IOS开发的时候,经常看到这样的代码,

[[NSBundle mainBundle] pathForResource:@"someFileName" ofType:@"yourFileExtension"]; 

[YourViewController initWithNibName:"YourViewController" bundle:nil];

一开始还不是很理解,通过google,慢慢的知道bundle在ios中的作用。

Bundle是什么呢?bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户. 在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载.

//在程序中获得main bundle

NSBundle bundle = [NSBundle mainBundle];  //很简单

//一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle

NSBundle otherBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];

//一旦我们有了bundle,就可以访问其中的资源文件了。

NSString path = [otherBundle pathForImageResource:@"img"];

NSImage img = [[NSImage alloc] initWithContentsOfFile:path];

//bundle中可以包含一个库. 如果我们从库得到一个class, bundle会连接库,并查找该类:

Class newClass = [otherBundle classNamed:@"Person"];

id person = [[newClass alloc] init];

//如果不知到class名,也可以通过查找主要类来取得

Class aClass = [otherBundle principalClass];

id classInstance = [[aClass alloc] init];

//可以看到, NSBundle有很多的用途.在这章中, NSBundle负责(在后台)加载nib文件. 我们也可以不通过NSWindowController来加载nib文件, 直接使用NSBundle:

BOOL flag = [NSBundle loadNibNamed:@"ViewController" owner:someObject];

//注意噢, 我们指定了一个对象someObject作为nib的File”s Owner

 

获取XML文件
NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"];
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];

© 著作权归作者所有

广州英趣科技
粉丝 31
博文 53
码字总数 21824
作品 0
广州
程序员
私信 提问
IOS-获取Model(设备型号)、Version(设备版本号)、app(程序版本号)等

// app名称 NSString app_Name1 = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; NSString appName = [NSString stringWithFormat:@"%@",[[NSBundle mainBun......

火龙战士
2015/07/08
593
0
iOS一些代码的取巧写法总结(一)

一、 字典(NSDictionary)和JSON字符串(NSString)之间互转 二、打开摄像机作为背景 三、打开背光灯 四、状态栏和导航栏一些设置 五、切回app时、会有闪现、闪现一次主屏幕的现象 六、[UIAppl...

朝雨晚风
2016/12/05
0
0
IOS7开发~Xcode5制作framework

IOS7开发~Xcode5制作framework 相关链接:IOS开发~Cocoa Touch Static Library(静态库) 一、Framework 简介(Introduction to Framework Programming Guide) Mac OS X 扩展了 framewor......

cbliu
2014/05/07
2.2K
0
iOS使用系统API扫描二维码条形码&限制扫描区域

SuperScanner QRScanner BarCodeScanner 二维码条形码扫描 iOS二维码条形码扫描,支持iOS7+,限制扫描区域,提高扫描速度 iOS使用系统API进行二维码条形码扫描&限制扫描区域 ---GitHub看了不...

JeansH
2015/10/20
2K
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
52分钟前
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部