从包含 HTML 的 NSString 创建本地 NSURL?

Make a local NSURL from an NSString containing HTML?

我有一个 NSString 包含一些 HTML。我正在尝试预加载 HTML,包括其中的任何外部图像链接。所以,澄清一下:我只有 HTML,我基本上需要加载它,抓取它的图像,并缓存该数据。

我可以使用以下代码在实时网站上执行此操作:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0], @"index.html"];
NSURL *url = [NSURL URLWithString:@"http://www.google.co.uk"];
NSData *urlData = [NSData dataWithContentsOfURL:url];
[urlData writeToFile:filePath atomically:YES];

但是如果没有 NSURL,这将无法工作。我想知道我是否可以从 HTML 的这个字符串中以某种方式制作一个 NSURL,并在此处的 URLWithString: 方法中替换它。

所以,问题:我可以把一些本地 HTML 放在 NSString 中,然后把它变成 NSURL,这样我就可以把它输入上面的代码,然后保存HTML 和它链接到的任何图像?

是的,你可以。您必须自己解析 HTML 中的链接。现实世界 HTML 不符合 XML,因此实现目标的一种快速而肮脏的方法是将 HTML 视为文本并使用正则表达式库解析链接。

你问的问题完全没有意义。

A URL 是指向在线资源位置的指针。在这种情况下,一个 html 文件。你不能把一个变成另一个。

我建议您创建一个 UIWebView,将字符串加载到其中,让它呈现并缓存结果。

[webView loadHTMLString:@"data" baseURL:nil];

我认为它需要实际放置在屏幕上才能呈现,因此将其设为不可见的 1 X 1 像素正方形,应该没问题。然后当 didFinishLoading 触发时。缓存结果