使用AFNetworking加载离线caching的JSON

我一直在尝试使用AFNetworking实现caching,所以我的cachingJSON将被加载离线。 我用不同的方式尽我所能,我不能让caching工作。 我不知道我在这里错过了什么

这是我的AppDelegate的代码:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. var cache :NSURLCache = NSURLCache(memoryCapacity: 4*1024*1024, diskCapacity: 32*1024*1024, diskPath: "app_cache") NSURLCache.setSharedURLCache(cache) return true } 

这也是我用来获取JSON的代码:

 let manager = AFHTTPRequestOperationManager() manager.requestSerializer = AFJSONRequestSerializer() manager.requestSerializer.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad manager.GET("http://api.androidhive.info/json/movies.json", parameters: nil, success: { (operation, responseObject) -> Void in if let j: AnyObject = responseObject, let mediaObjects = j.valueForKeyPath("image") as? NSArray { self.imageArray = mediaObjects as! [String] } self.myCollectionView.reloadData() println("success") }, failure: { (operation, error) -> Void in }) 

所以在失败块我想加载caching的数据,但我不知道我错过了什么? 请提供工作代码,caching是一个很大的话题,我找不到一个完整的工作示例!

男人,我不知道这么快,但只要我知道你将要做的是:

首先,捕获返回的数据,然后保存到NSCachedURLResponse中。 在objective-c中会是这样的:

 NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:operation.response data:operation.responseData]; [[NSURLCache sharedURLCache] storeCachedResponse:cachedResponse forRequest:urlRequest]; 

之后,如果您的申请发生错误,您将恢复为该URL保存的以前的数据。

 NSData *data = [[[NSURLCache sharedURLCache] cachedResponseForRequest:urlRequest] data]; 

我希望能帮到你。