2009-07-23 11 views
0

Donc, j'ai un tas de HTML qui est stocké dans une base de données SQLite, et ils se lient entre eux. Lorsqu'un utilisateur clique sur un lien, cette dernière doit être traitée en extrayant le code HTML approprié de la base de données. Cela pourrait entraîner le besoin de charger des images, qui sont également stockées dans la base de données (c'est une chose future, il n'y a pas encore d'images, mais j'aimerais pouvoir les utiliser). J'ai regardé la documentation de WebKit, mais je n'arrive pas à comprendre comment y arriver. J'ai surtout regardé WebFrameLoadDelegate et WebResourceLoadDelegate, mais je n'en ai pas vu un qui me permettrait d'attraper la requête, de récupérer le contenu approprié, puis de l'envoyer dans une réponse.Comment puis-je récupérer le code HTML à charger dans un WebView (ou WebFrame) à partir d'un magasin persistant local?

Des idées? Je suis plutôt novice en Objective-C et Cocoa, mais je pense que je suis en train de maîtriser les choses.

Répondre

2

Comment les pages stockées dans la base de données sont-elles liées les unes aux autres? Il est probablement plus facile s'ils utilisent une sorte de schéma d'URL client pour commencer.

L'approche que je voudrais utiliser est de mettre en œuvre

-webView:resource:willSendRequest:redirectResponse:fromDataSource:

dans votre délégué de charge des ressources. Si la demande est une ressource qui est en fait situé dans la base de données, retourner une nouvelle [1] NSURLRequest qui utilise un protocole d'URL personnalisée qui pointe vers la ressource de base de données:

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

[1] À moins vous établissez déjà un lien entre vos ressources avec le schéma d'URL personnalisé - vous pouvez alors ignorer cette étape.

Ensuite, implémentez un NSURLProtocol personnalisé pour x-my-scheme qui sait comment récupérer les données de la base de données. L'exemple PictureBrowser donne un exemple simple de la façon dont cela est fait.

+0

Merci! J'ai regardé l'exemple de PictureBrowswer, et je pense que je comprends ce qu'il fait. –