Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将文件保存给用户';Web视图可以看到它的设备_Iphone_Ios_Uiwebview - Fatal编程技术网

Iphone 将文件保存给用户';Web视图可以看到它的设备

Iphone 将文件保存给用户';Web视图可以看到它的设备,iphone,ios,uiwebview,Iphone,Ios,Uiwebview,我有一个混合(Objective C+HTML)应用程序,我希望能够定期将远程文件(图像和css)保存到用户的设备,但可以通过浏览器在同一应用程序的webview实例中加载 我认为不可能将文件保存到资源包本身(尽管在模拟器中可以),因此我假设必须将文件保存到其他地方。但是我不确定在HTML文档仍然可以访问它的地方使用什么路径 基本上,我想这样做: NSURL* url = [NSURL URLWithString:@"http://myserver.com/August.png"];

我有一个混合(Objective C+HTML)应用程序,我希望能够定期将远程文件(图像和css)保存到用户的设备,但可以通过浏览器在同一应用程序的webview实例中加载

我认为不可能将文件保存到资源包本身(尽管在模拟器中可以),因此我假设必须将文件保存到其他地方。但是我不确定在HTML文档仍然可以访问它的地方使用什么路径

基本上,我想这样做:

    NSURL* url = [NSURL URLWithString:@"http://myserver.com/August.png"];
    NSString* filePath = @"[?????]/MonthlyImage.png";
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data)
    {
        NSError* error;
        if ([data writeToFile:filePath options:NSDataWritingAtomic error:&error])
        {
            NSLog(@"Wrote");
        }
        if (error != nil) 
        {
            NSLog(@"ERROR: %@", [error description]);
        }
    }
<img src="[??????]/MonthlyImage.png" />
然后在我的webview中,我希望能够像这样加载图像:

    NSURL* url = [NSURL URLWithString:@"http://myserver.com/August.png"];
    NSString* filePath = @"[?????]/MonthlyImage.png";
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data)
    {
        NSError* error;
        if ([data writeToFile:filePath options:NSDataWritingAtomic error:&error])
        {
            NSLog(@"Wrote");
        }
        if (error != nil) 
        {
            NSLog(@"ERROR: %@", [error description]);
        }
    }
<img src="[??????]/MonthlyImage.png" />


我可以用什么值来代替将起作用的
?甚至可能吗?

不允许保存到捆绑包,因为不允许修改应用程序二进制文件

您可以尝试将文件存储在documents文件夹中,然后从那里检索它。要使其正常工作,重要的一点是在创建
UIWebVIew
时还指定
baseURL

您可以通过以下方式检索文档目录:

NSString *documentsDirectory = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
if ([paths count] > 0) {
    documentsDirectory = [paths objectAtIndex:0];
}
然后将文件存储在那里,当您想将其加载到
UIWebView
中时,请执行:

    [_label loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:documentsDirectory]];

现在,
将在您的文档目录中查找png。

我现在就试试。如果我也从应用程序的资源文件夹中加载文件,baseURL将是一个问题,不是吗?不知为什么,我认为是这样。。。但是,如果您也将这些资源复制到documents文件夹中,您就可以克服这个问题。。。(另请参见我的上一次编辑)看起来这可能有效。有趣的是,与PC不同,
文档
文件夹是应用程序包本身的子文件夹,可以使用相对URL访问它们。因此,我不必更改基本URL(反正我正在加载带有URL请求的UIWebView);我只需要像这样加载文件: