我有一个混合(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" />
我可以使用哪些值代替可行的??????
?它甚至可能吗?
答案 0 :(得分:1)
不允许保存到捆绑包,因为不允许修改应用程序二进制文件。
您可以尝试将文件存储在文档文件夹中,然后从那里检索它。要使其有效,重要的是在创建baseURL
时指定UIWebVIew
。
您可以通过以下方式检索文档目录:
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]];
现在,<img src="MonthlyImage.png" />
将在您的文档目录中查找png。