XCode ios iphone 资源文件管理 NSBundle mainBundle
来源:互联网 发布:兽血天龙网络连接 编辑:程序博客网 时间:2024/05/22 11:37
初学iOS开发的同学,不管是自己写的,还是粘贴的代码,或多或少都写过下面的代码
[[NSBundle
[YourViewController
可是你知道这里的bundle到底是个啥玩意呢?!
Bundle简单地讲,就是一个内部结构按照标准规则组织的特殊目录
iOS的应用都是通过bundle进行封装的,对应的bundle类型是Application类型,平时我们通过XCode编译出来的Target(即我们开发的应用),其实就是一个Application类型bundle,即一个文件夹!但是Finder会把这个bundle当做一个文件显示给我们,其实是因为这个bundle自身也是一个package,而Mac系统会把所有的package当做一个文件来对待,显示给用户,从而防止用户误操作导致程序文件损坏或丢失。至于bundle和package有什么区别,就不在这里展开说明了,本文后面所说的bundle都会被Mac系统视为package。
现在我们已经知道了,原来我们开发的应用程序,最后都会成为一个bundle,那么就不难理解为什么很多资源文件加载大多是通过bundle来进行的了,从bundle进行文件加载实际就是通过应用自己所在的文件夹进行加载。
不过紧接着我们又会产生好几个疑问:
1
2
事实上,我们是可以使用文件系统的路径进行资源文件的访问的,不过当我们要进行App的国际化的时候,我们需要自己去实现不同语言、地区情况下加载对应的文件,而在部分资源文件公用,部分需要国际化的时候,对开发人员来讲,代码维护起来尤为混乱。
而bundle对iOS开发者来讲,最大的方便就是可以非常简单地让自己的应用国际化,在不同的语言不同的地区,加载不同的资源文件,显示不同的语言文字,而实现这些只需要我们严格按照bundle的要求进行资源文件的存放即可,而不需要写大量代码判断地区语言。遵循的方法也很简单,只需要我们创建对应的"本地化文件夹"即可,例如我们要同时让图片"pic.png"在中文和英文下显示不同的内容,只需要创建两个本地化文件夹zh.lproj和en.lproj,分别放入同名但内容不同的"pic.png"即可。
在使用ArcGIS
解决这个问题很简单,只需要将需要拷贝的资源文件夹拖拽到xcode工程other
添加以后
这样,我们在使用[[NSBundle
注意,请不要使用group或者add
更新资源文件夹的
完美的方式
但有两个曲线救国的方针:
方案一:
同时维护
方案二:
只维护一个
鱼与熊掌,
http://stackoverflow.com/questions/1812731/Iphone-interface-builder-moved-resources-to-sub-directory-now-ib-cant-see-th
http://maniacdev.com/2010/08/how-to-use-xcodes-folder-references/
http://majicjungle.com/blog/123/
- XCode ios iphone 资源文件管理 NSBundle mainBundle
- [NSBundle mainBundle]加载文件用法
- iOS问题笔记-[[NSBundle mainBundle] pathForResource: ofType:]方法获取不到资源路径
- IOS开发之 [[NSBundle mainBundle] infoDictionary]
- NSBundle、[NSBundle mainBundle] 详解
- iOS Memory Leaks with [[NSBundle mainBundle] loadNibNamed:owner:options:]
- iOS开发.[NSBundle mainBundle] 通过pathForResource返回路径为空.
- IOS开发: NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]
- iOS开发.[NSBundle mainBundle] 通过pathForResource返回路径为空.
- iOS开发 [NSBundle mainBundle] 通过pathForResource返回路径为空.
- NSBundle *mainBundle将hex文件放入app资源库
- [NSBundle mainBundle] 详解
- NSBundle以及mainBundle
- [[NSBundle mainBundle] infoDictionary]
- [NSBundle mainBundle] 详解
- NSBundle mainBundle
- [[NSBundle mainBundle] infoDictionary]
- [[NSBundle mainBundle] infoDictionary]
- 例题3-2
- 美工人员
- FTTX(2)
- springSide例子中的分页标签更改
- 生产者消费者实现
- XCode ios iphone 资源文件管理 NSBundle mainBundle
- HQL 语法(转)
- git am
- URAL 1651 Shorest Subchain DP #by Plato
- 程序人员
- 纯Ajax实现Google Suggest功能。
- Linux 开机启动脚本
- 基于朴素贝叶斯分类器的文本分类算法(上)
- 常见HTTP错误