代码之家  ›  专栏  ›  技术社区  ›  thomax

iPhone dev:从资源文件夹加载文件

  •  19
  • thomax  · 技术社区  · 14 年前

    我正在编写一个带有UIWebView的iPhone应用程序,它应该显示app resource文件夹中的各种html文件。在xcode my project overview中,这些html文件如下所示:

    dirA
    |---> index.html 
    |---> a1.html
    |---> a2.html
    |---> my.css
    |---> dirB
          |---> b1.html
          |---> b2.html
    |---> dirC
          |---> c1.html
          |---> c2.html
    

    • 选中“将项目复制到目标组文件夹(如果需要)”。
    • 文本编码:Unicode(utf-8)。
    • 递归地为任何添加的文件夹创建组。

    <a href="a1.html">a1</a>
    <a href="a2.html">a2</a>
    <a href="dirB/b2.html">b2</a>
    <a href="dirC/c1.html">c1</a>
    

    为了在应用程序启动时显示index.html,我使用以下代码:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    

    didFailLoadWithError 将捕获情况并报告请求的文件不存在。

    也,

    [webView loadHtmlString:myHtml];
    

    所以问题是:如何跟踪资源子目录中html文件的相对链接?

    在过去的几天里,我在stackoverflow和其他的管子上到处寻找这个问题的答案,但是我没有找到解决这个问题的方法。如果您有任何见解,我们将不胜感激!

    哟哟!我想出来了!多高兴啊!以下是我所做的:

    1. 指定资源的根目录,如下所示: NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];
    3 回复  |  直到 11 年前
        1
  •  13
  •   zaph    14 年前

    要在应用程序包中创建文件夹,请将文件夹拖到Xcode并选择单选按钮:“为任何添加的文件夹创建文件夹引用”。

        2
  •  2
  •   Cliff    14 年前

        3
  •  2
  •   aldi    14 年前

    我通过使用 +fileURLWithPath: 初始值设定项而不是 +URLWithString:

      NSString* path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"HTMLContent"];
      NSString* htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
      [self.webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:path]];
    

    “HTMLContent”是我对你的“dirA”的等价物。不需要进行其他更改。