Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c monotouch/objective c iphone 5.x如何使用NSURLCache缓存网页?_Objective C_Ios_Caching_Xamarin.ios_Nsurlcache - Fatal编程技术网

Objective c monotouch/objective c iphone 5.x如何使用NSURLCache缓存网页?

Objective c monotouch/objective c iphone 5.x如何使用NSURLCache缓存网页?,objective-c,ios,caching,xamarin.ios,nsurlcache,Objective C,Ios,Caching,Xamarin.ios,Nsurlcache,我找到了和我相似的线。我想做的基本上是一样的:在我的iphone模拟器上存储网页,这样我就可以离线使用它们并将它们加载到webview。当我在线时,我下载/缓存它们;当我离线时,我使用缓存版本,以便在离线时修改它们 从我从5.0版开始读到的内容来看,iPhone允许在磁盘上进行缓存。我的问题是,如何使用NSURLCache实现这一点 我查阅了NSURLCache类的一些文档,但找不到任何具体的答案或示例。我最近在用Monotouch为iPhone开发的一个应用程序中实现了离线支持。我就是这样做的

我找到了和我相似的线。我想做的基本上是一样的:在我的iphone模拟器上存储网页,这样我就可以离线使用它们并将它们加载到webview。当我在线时,我下载/缓存它们;当我离线时,我使用缓存版本,以便在离线时修改它们

从我从5.0版开始读到的内容来看,iPhone允许在磁盘上进行缓存。我的问题是,如何使用NSURLCache实现这一点


我查阅了NSURLCache类的一些文档,但找不到任何具体的答案或示例。

我最近在用Monotouch为iPhone开发的一个应用程序中实现了离线支持。我就是这样做的

首先,我获得/创建了我的应用程序缓存,如下所示:

NSUrlCache _cache = NSUrlCache.SharedCache;
当我想要请求一个URL时,我会检查应用程序缓存中是否存储了响应,否则我会发送一个请求

NSUrl url = new NSUrl ("http://whatever.com");
NSUrlRequest request = new NSUrlRequest (url);
NSUrlCachedResponse cacheResponse = _cache.CachedResponseForRequest (checkCacheRequest);

// check whether cache had response (would be null otherwise)
if (cacheResponse is NSCachedUrlResponse) {
    // cache has response load the cached page in the UIWebView
    _webView.loadData (cacheResponse.Data, "text/html", "UTF-8", url);
} else {
    //cache does not have response send a asynchronous request
    NSUrlConnection.FromRequest(request, myDelegate);
}
委托myDelegate是NSURLConnectionLegate的子类,应该处理从请求收到的响应,但是您希望实现它。我不需要手动将响应添加到缓存中,因为这是由FromRequest自动完成的

我改变了这个方法,允许我的应用程序显示一个缓存页面,同时在我的请求中使用If-Modified-Since标题检查页面的更新版本。据我所知,这不是页面的永久存储,因为在某些情况下,系统可以清除应用程序缓存文件夹。然而,在我的测试过程中,我发现在应用程序关闭、手机打开和关闭后,页面可以脱机使用,这符合我的需要

我希望这个例子能有所帮助