如何从本地持久性存储中检索要加载到WebView(或WebFrame)中的HTML?

时间:2009-07-23 02:44:22

标签: objective-c cocoa webkit webview

所以,我有一堆HTML存储在SQLite数据库中,它们之间来回链接。当用户单击以跟踪链接时,需要通过从数据库中提取适当的HTML来为该请求提供服务。这可能导致需要加载图像,这些图像也存储在数据库中(这是未来的事情;还没有图像,但我希望能够使用它们)。我查看了WebKit文档,但无法弄清楚如何实现这一点。我主要看了WebFrameLoadDelegate和WebResourceLoadDelegate,但我没有看到一个让我抓住请求,抓取相应内容,然后在响应中发送它。

想法?我对Objective-C和Cocoa很陌生,但我认为我主要是掌握了这些东西。

1 个答案:

答案 0 :(得分:2)

存储在数据库中的页面如何相互链接?如果他们使用某种客户URL方案开始,这可能是最简单的。

我将使用的方法是实现

-webView:resource:willSendRequest:redirectResponse:fromDataSource:

在您的资源加载委托中。如果请求是针对实际位于数据库中的资源,请返回 new [1] NSURLRequest,它使用指向数据库资源的自定义URL协议:

x-my-scheme:///table/row

[1]除非您已经使用自定义URL方案链接资源,否则可以跳过此步骤。

然后,为x-my-scheme实现自定义NSURLProtocol,它知道如何从数据库中检索数据。 PictureBrowser示例提供了一个如何完成此操作的简单示例。