![iOS开发:从零基础到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/796/26793796/b_26793796.jpg)
上QQ阅读APP看书,第一时间看更新
4.9 NSBundle类
当创建一个应用时,系统存储了应用相关联的所有资源,例如图片、文件等,将这些内容放在应用包(application bundle)中。为了定位应用包中的资源,则需要使用NSBundle类。
1.向应用包中添加资源
在使用Xcode进行iOS开发时,可以在Finder中选中一些资源文件,然后拖动到Xcode的左边窗口中,即可完成资源的添加。当出现如图4-35所示对话框时,通常选择复制资源文件到项目中。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P124_15041.jpg?sign=1739263274-JkhOZXI9HVgX6roAcaL8GsJW0Q8PWO1t-0-a0c2e72c478479522973c109c1be0f8a)
图4-35 添加资源
由于Command Line Tool是没有Bundle概念的,所以需要先创建一个Single View Application,如图4-36所示。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P124_15045.jpg?sign=1739263274-2F6NEz7iLttJ63mBMKWE5Sos0Qfphx9Q-0-df96db0b2017371192fe6fcd1785aa92)
图4-36 创建应用
然后向程序的目录中添加一个myfile.txt文件,添加成功后,该资源文件就会出现在工程目录中,如图4-37所示。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P125_15122.jpg?sign=1739263274-fsJigP3Cvh3hTc2Sn3z4J78AEZSxsQWl-0-9d328ea7bc6433ad282536e817721319)
图4-37 添加myfile.txt
2.从应用包中读取资源
当向程序的应用包中添加了一些资源文件后,在某些情况下,就需要从应用包中读取这些文件,例如,获取一张图片并显示在屏幕上,这就需要找到这张图片在程序包中的位置。NSBundle类提供了在程序包中查找资源的相关方法。
- 使用mainBundle方法来实例化得到一个NSBundle类对象。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T125_15126.jpg?sign=1739263274-PvCVd4jgiLvcduYH94OTImlLnb9rDIKy-0-2454dca9ff3260ee1ee0ead94ee9e42b)
- 可以使用pathForResource方法来获取某个资源的路径,返回一个NSString类型的对象。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T125_15128.jpg?sign=1739263274-O70qWc3D36iCD5pBKl8MJSyutBb9nzkM-0-8a0a6eaacac26bc7b62edc3d7cb8e2a4)
把下方的所有代码添加到ViewController.m文件的viewDidLoad方法中,可以实现从应用包中读取名称为my file,类型为txt的文件(请提前添加文件到应用包),并打印出文件中的内容。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-T125_82844.jpg?sign=1739263274-dqENZmqtVn9n5e0cQlUuNCyyPXRoSFaR-0-410e831d495b1f5115e9aa73598bccf8)
运行结果如图4-38所示,可以看到资源文件的路径,同时能够打印出资源文件中存储的内容。
![](https://epubservercos.yuewen.com/D4B438/15253388904120706/epubprivate/OEBPS/Images/Figure-P126_15179.jpg?sign=1739263274-t3VBkVZsAPHLEm7tfYgUM86ajJYLKKqL-0-b6c9a49bd9d74edbb57f721e1a35e4ed)
图4-38 运行结果