iPhone - 我怎么知道URL是资源文件?

时间:2011-05-04 15:29:26

标签: iphone url resources uiwebview request

我正在关注shouldStartLoadWithRequest中的网址。

我怎么知道它是我试图打开的项目资源之一(例如使用[self.webView loadHTMLString:htmlContentFinal baseURL:[NSURL fileURLWithPath:bundlePath]];)还是别的什么?

2 个答案:

答案 0 :(得分:4)

您可以检查网址字符串是否以file://开头:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (request.URL.isFileURL) {
        // do some stuff
    }
}

  

我如何确保我是加载该文件的人?用户可以自己在url字段中写入该URL。

您可以实施-textFieldDidBeginEditing-textFieldDidEndEditing并将一些布尔属性设置为YES

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ([[textField.text substringToIndex:7] isEqualToString:@"file://"]) {
        self.fileUrlEnteredManually = YES;
    } else {
        self.fileUrlEnteredManually = NO;
    }
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (request.URL.isFileURL) {
        if (self.fileUrlEnteredManually) {
            // user entered "file://" manually
        } else {
            // user didn't
        }
    }
}

- (void)viewDidload {

    // ...

    fileUrlEnteredManually = NO;
    [webView loadRequest:yourLocalRequest];

}

答案 1 :(得分:0)

检查[URL schema]。如果是file,则它是本地文件。但它不一定是捆绑资源 - 例如,可能是应用程序文档中的文件。

要确保它在捆绑包中,请将路径的开头与捆绑包的路径匹配,可从[NSBundle mainBundle]获得。虽然我不明白为什么。