之 前在初始化一个类的时候:TestViewController *viewcontroller=[[TestViewController alloc]initWithNibName:@"TestViewController" bundle:[NSBundle mainBundle]];不是很明白:[NSBundle mainBundle]的意思。后来查阅资料后知道了它的作用,如下:

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

通过使用下面的方法得到程序的main bundle
NSBundle *myBundle = [NSBundle mainBundle];

一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle
NSBundle *goodBundle;
goodBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];

一旦我们有了NSBundle 对象,那么就可以访问其中的资源了

NSBundle束,是一种特定的文件类型,其中的内容遵循特定的结构。

NSBundle的一个主要作用是 获取Resources文件夹中的资源

在编程中使用[NSData
dataWithContentOfFile:@"foo"]的时候,总是无法读取正确的文件内容。而使用[NSData
dataWithContentOfFile:[[NSBundle mainBundle] pathForResource:@”foo”
ofType:@”"]的时候就可以。

因为当使用相对路径的时候,其实他相对的当前目录并不是程序运行的目录,而是“/”。只有使用[NSBundle mainBundle]来生成的路径才是文件真正的路径。
在此记录一下:在以后的开发中不直接使用任何相对路径,而是使用经过计算以后的绝对路径。
 

一.获取图片

1.   NSString *path = [[NSBuddle mainBuddle] pathForResource:@"resourceName" oftype@"resourceType"];

UIImage *image = [[UIImage imageWithContentsOfFile:path];

2.   UIImage *image = [UIImage imageNamed:@"imageName"];

二.获取plist文件

NSArray *array =[[NSArrayalloc]initWithContentsOfFile:[[NSBundlemainBundle]pathForResource:@"name"ofType:@"plist"]];

NSDictionary *dict=[arrayobjectAtIndex:index];//将plist文件中的内容转换成字典

Bundle使用&NSBundle的更多相关文章

  1. 浅谈NSBundle

    图片.xib等资源文件无法直接封入静态库,要想在静态库中使用他们,就必须借助于bundle 那么什么是bundle呢? 简单来说,bundle就是一个内部结构按照标准规则组织的特殊目录,即direct ...

  2. NSBundle的理解和mainBundle的基本介绍

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

  3. 【IOS开发笔记02】学生管理系统

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  4. iOS SQLite3的使用

    1.创建可修改的数据库文件 //应用包内的内容是不可写的,所以需要把应用包内的数据库拷贝一个副本到资源路径去 - (void)createEditableDatabase{ BOOL success; ...

  5. iOS 视图控制器 (内容根据iOS编程编写)

    视图控制器是  UIViewController 类或其子类对象.每个视图控制器都负责管理一个视图层次结构,包括创建视图层级结构中的视图并处理相关用户事件,以及将整个视图层次结构添加到应用窗口. 创建 ...

  6. iOS 8 Extensions

       本文由海水的味道收集整理,欢迎转载    当前版本 0.0.1  iOS 8 Extensions 一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app ...

  7. 【原】iOS学习之控制器的创建

    本次博客是一篇总结性质的博客,总结的是各种创建控制器的方式以及一些需要注意的操作. 1.通过storyboard创建控制器 正如我上一篇博客中所说,当 Main Interface 没有选定的时候,我 ...

  8. App Extension

    一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app之间的数据交互成为可能.用户可以在app中使用其他应用提供的功能,而无需离开当前的应用. 在iOS 8系统 ...

  9. iOS 多语言的切换

    一.添加应用程序需要支持的国际语言 二.新建一个Localizable.strings文件,作为多语言对应的词典,存储多种语言 三.在Localizable.strings的对应文件以键值对的形式配置 ...

随机推荐

  1. tophat安装

    1     依赖软件:bowtie,bowtie2,samtools,boost c++ library 2     建立索引文件:      bowtie包括bowtie,bowtie-build, ...

  2. python简单爬虫技术

    项目中遇到这个只是点,捣鼓了半天最后没用上,但是大概对爬虫技术有了些许了解 要先 比如: #抓取网页代码 import urllib2 import json url_data = urllib2.u ...

  3. Python新式类与经典类的区别

    1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类 ...

  4. Nginx集群之基于Redis的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之基于Redis的WebApi身份验证... 1 3       Redis数据库... 2 4       Visualbox ...

  5. STM32f103x IAP远程升级小结

    最近在面试的时候遇到一个关于IAP远程程序升级的问题,由于之前所做的项目没有涉及到远程升级需求,当时一脸懵呆,不过回答的还是不错的,今天针对STM32F103系列调试了IAP的程序,这里做一下小结,如 ...

  6. 对《cookie之困》的一些总结与思考

    0x00 前言 早些时候在gayhub翻安全大会的paper,翻到了kcon的一些paper. https://github.com/knownsec/KCon 从前辈们的paper中学到了不少,也产 ...

  7. jquery tips简易使用方法 新手必看

    使用jquery1.12.4以上版本 使用jquery插件 tips .beg-pull-right 点击时的选择器 在这里写的是一个类选择器   记得引入jquery $(".beg-pu ...

  8. SAP HANA中的SLT简介

    在以SAP系统作为主要ERP的企业中,不同系统之间的数据库数据同步是个重要的工作.对于这种需求,除了开发ABAP接口之外,也有高效的工具可用.SLT就是其中之一. SLT是SAP的第一个ETL(Ext ...

  9. 五分钟学习React(二):我的第一个Hello World

    我的第一个React应用 接着我们上一期所讲的内容,通过create-react-app脚手架创建的应用,它是基于ES6的语法生成的.我们清空src目录下的文件,并分别创建index.js和index ...

  10. gitignore样例解析

    # 这是注释行 -- 被忽略 *.a # 忽略所有以 .a 为扩展名的文件 !lib.a # 但是lib.a 文件或目录不要忽略,即使前面设置了对*.a的忽略 /TODO # 只忽略此目录下的TODO ...