2015-01-14 21 views
0

我有一個NSString包含一些HTML。我試圖預加載該HTML,包括其中的任何外部圖像鏈接。所以,澄清:我只是HTML,我需要基本上加載它,抓住它的圖像,並緩存該數據。從包含HTML的NSString中創建一個本地NSURL?

我可以使用下面的代碼直播網站做到這一點:

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:方法。

所以,問題:我可以採取一些NSString內的本地HTML並將其轉換爲NSURL,以便我可以將它提供到上面的代碼中,並保存HTML和它鏈接到的任何圖像?

回答

1

你問的問題絕對沒有意義。

URL是指向聯機資源位置的指針。在這種情況下,一個HTML文件。你不能讓一個人進入另一個。

我建議你創建一個UIWebView,將字符串加載到該字符串中,讓它呈現並緩存結果。

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

我相信這將需要實際在屏幕上放置它來呈現,所以使它成爲一個無形的1×1像素的正方形,它應該是罰款。然後當didFinishLoading火災。緩存結果

+0

這就是我目前在訪問內容時所做的,但如果他們在離線狀態下這樣做,我需要堅持他們將看到的消息,包括其圖像。我可以告訴一個看不見的'webView'來加載它,一個沒有被添加到視圖?從那裏,有沒有辦法告訴'webView'緩存完成加載後的內容? – Luke

+0

啊,你在編寫上面的代碼的時候編輯過^我會研究如何緩存web視圖的內容。有關如何完成的任何提示? – Luke

+0

@lukech是的,通過谷歌搜索它:http://stackoverflow.com/questions/992348/reading-html-content-from-a-uiwebview –

0

是的,你可以。你必須自己解析HTML以外的鏈接。真實世界的HTML不符合XML標準,因此實現您的目標的一種快速和骯髒的方法是將HTML視爲文本並使用正則表達式庫解析鏈接。