zoukankan      html  css  js  c++  java
  • 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中的内容

     1 -(void)readXML
     2 {
     3     //xml文件的路径
     4     NSString *dataURL = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"xml"];
     5     //读取xml内容
     6     NSData *data =  [NSData dataWithContentsOfFile:dataURL];
     7     GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
     8     //得到根标签元素Dogs
     9     GDataXMLElement *rootElement = [doc rootElement];
    10     //得到根标签元素下的子标签元素Dog
    11     NSArray *elementsForDogs = [rootElement elementsForName:@"Dog"];
    12     //遍历
    13     for (GDataXMLElement *element in elementsForDogs) {
    14         //id节点
    15         GDataXMLNode *node = [element attributeForName:@"id"];
    16         //id节点值
    17         NSLog(@"Dog的id为%@", [node stringValue]);
    18         //元素name
    19         GDataXMLElement *elementName = [[element elementsForName:@"name"] firstObject];
    20         NSLog(@"名字为%@", [elementName stringValue]);
    21         //元素age
    22         GDataXMLElement *elementAge = [[element elementsForName:@"age"] firstObject];
    23         NSLog(@"年龄为%@", [elementAge stringValue]);
    24     }
    25 }

    执行没有任何结果。

    输出结果

    二、问题分析

    估计原因是elementsForDogs元素个数为0,没有进入for循环。打印elementsForDogs的元素总数,结果真的是0。然后往上查找,发现原来是dataURL值为nil。为什么NSBundle的pathForResource:ofType: 返回值为nil?

    找到当前app,右键点击“显示包内容”,发现目录下不存在data.xml文件

    app

    三、问题解决

    告诉编译器把data.xml拷贝到05_JSON和XML_XML处理.app。

    1.选择“项目”-->“TARGETS”下的05_JSON和XML_XML处理。

    2.然后点击"Build phases",选择“Copy Bundle Resources”。

    3.点击“+”添加data.xml

    步骤

    add

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

    addResult

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

    result

    学习,以记之。如有错漏,欢迎指正

    作者:冯子武
    出处:http://www.cnblogs.com/Zev_Fung/
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    如果博文对您有所收获,请点击下方的 [推荐],谢谢

  • 相关阅读:
    域名交易网
    android canvas 二
    android 获取当前时间
    loadrunner 面向目标的场景load Generator 连接 失败
    开发平台
    java 调用 bat 如果里面用了第三方命令 dos 窗口没有关闭 解决方法
    Socket网络框架 MINA
    JQuery引用
    Jmeter
    android 获取 service 信息
  • 原文地址:https://www.cnblogs.com/Zev_Fung/p/5591687.html
Copyright © 2011-2022 走看看