NSBundle的pathForResource:ofType: 返回值为nil问题
一、问题描述
在处理XML的过程中,在项目中手动创建名为“data.xml”的文件,加入网上找的内容
<?xml version="1.0" encoding="utf-8"?>
<Dogs>
<Dog id="001">
<name>Ryan</name>
<age>26</age>
</Dog>
<Dog id="002">
<name>Tang</name>
<age>27</age>
</Dog>
<Dog id="003">
<name>Lee</name>
<age>24</age>
</Dog>
</Dogs>
然后xcode加载data.xml中的内容
-(void)readXML
{
//xml文件的路径
NSString *dataURL = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"xml"];
//读取xml内容
NSData *data = [NSData dataWithContentsOfFile:dataURL];
GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options: error:nil];
//得到根标签元素Dogs
GDataXMLElement *rootElement = [doc rootElement];
//得到根标签元素下的子标签元素Dog
NSArray *elementsForDogs = [rootElement elementsForName:@"Dog"];
//遍历
for (GDataXMLElement *element in elementsForDogs) {
//id节点
GDataXMLNode *node = [element attributeForName:@"id"];
//id节点值
NSLog(@"Dog的id为%@", [node stringValue]);
//元素name
GDataXMLElement *elementName = [[element elementsForName:@"name"] firstObject];
NSLog(@"名字为%@", [elementName stringValue]);
//元素age
GDataXMLElement *elementAge = [[element elementsForName:@"age"] firstObject];
NSLog(@"年龄为%@", [elementAge stringValue]);
}
}
执行没有任何结果。

二、问题分析
估计原因是elementsForDogs元素个数为0,没有进入for循环。打印elementsForDogs的元素总数,结果真的是0。然后往上查找,发现原来是dataURL值为nil。为什么NSBundle的pathForResource:ofType: 返回值为nil?
找到当前app,右键点击“显示包内容”,发现目录下不存在data.xml文件

三、问题解决
告诉编译器把data.xml拷贝到05_JSON和XML_XML处理.app。
1.选择“项目”-->“TARGETS”下的05_JSON和XML_XML处理。
2.然后点击"Build phases",选择“Copy Bundle Resources”。
3.点击“+”添加data.xml。


4.“Copy Bundle Resources”包含data.xml了。

最后重新运行,结果出来了

NSBundle的pathForResource:ofType: 返回值为nil问题的更多相关文章
- iOS [[NSBundle mainBundle] pathForResource:@"" ofType:@""]无法获取到文件
将一个文件导入到工程中后,用[[NSBundle mainBundle] pathForResource:@"" ofType:@""]来获取到该文件时,一直无 ...
- [[NSBundle mainBundle] pathForResource:fileName ofType:]获取文件路径不成功
目标文件明明已经加入项目了,但是使用[[NSBundle mainBundle] pathForResource:fileName ofType:]来获取文件路径的时候却为nil: 遇到这个问题大家需 ...
- [[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"] 找不到对应的文件解决方法
最近在使用[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]时,找不到其对应的文件,文 ...
- Autorelease返回值的快速释放机制
+ (instancetype)createSark { return [self new];}// callerSark *sark = [Sark createSark]; 编译器改写成了形如下面 ...
- 【Go入门教程3】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)
这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...
- GetLastError()函数返回值及含义
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值, ...
- IOS开发中返回值为null时的处理
在IOS开发中,如果得到了null返回值很容易造成程序崩溃,null和nil的判断方法不同. nil的判断方法: if(data==nil) { NSLog(@"data is n ...
- [转]WinExec、ShellExecute和CreateProcess及返回值判断方式
[转]WinExec.ShellExecute和CreateProcess及返回值判断方式 http://www.cnblogs.com/ziwuge/archive/2012/03/12/23924 ...
- Delphi检查GetElementByID返回值的有效性
Delphi 可以像JavaScript 脚本语言一样使用GetElementByID方法访问网页中指定ID的元素,一般要配合TWebBrowser组件使用.首先使用TWebBrowser浏览网页,然 ...
随机推荐
- 配置lamp中的apache
root@komiles-VirtualBox:/etc/apache2/sites-available# service apache2 restart * Restarting web serve ...
- 如何在CentOS 7上安装EPEL源
EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentO ...
- javascript高级程序设计---DOM
DOM是文档对象模型的简称,DOM的基本思想是把结构化文档解析成一系列的节点,由这些节点组成数装的DOM树,所有的这些节点和最终的树状结构都有统一的对外接口,达到使用编程语言操作文档的目的,DOM可以 ...
- Knockout.Js案例三单页面应用程序
<ul data-bind="foreach: folders"> <li data-bind="text: $data">& ...
- 快速入门SaltStack
导读 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS EC2实例),它的底层使用ZeroMQ消息队列pub/sub方式 ...
- OpenCV成长之路 01、图像的读写与显示
一.工具篇 工欲善其事,必先利其器.学习OpenCV,肯定少不于基本的编程工具与OpenCV库.在Windows平台下你可以选择Visual Studio.CodeBlock等,当然你也可以选择在Li ...
- C++笔试题(转)
http://blog.csdn.net/hxz_qlh/article/details/16864567 这里面列举的题考察的东西都非常细,包括strcpy,字符串,大.小端的判断,很容易犯错,值得 ...
- JS中try....catch
1.事情还有得挽回,换条路走try { 执行某个逻辑} catch (e) { 出问题,换个逻辑执行} 2.体面的退出try { 正常流程} catch (e) { 弹个框告诉用户不好意思出了点问题 ...
- tfw格式图解
话不多说,直接看图. 上图中的UV坐标,实际上只的是图像的 横向坐标 和 纵向坐标 .即图像的行和列坐标. 对于图上任意一个像素点(col,row)这个坐标,换算其地理坐标就十分简单. GeoX = ...
- 微博地址url(id)与mid的相互转换 Java版
原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...