NSURLCache no funciona después de la terminación de la aplicación iOS

Estoy desarrollando una aplicación en la que también estoy implementando el modo fuera de línea. Para esto, utilicé el mecanismo NSURLCache. Cuando la aplicación está en primer plano, el mecanismo de caching funciona perfectamente incluso si el dispositivo entra en modo fuera de línea. El problema viene cuando salgo de la aplicación y luego la abro en modo fuera de línea. Esta vez NSCachedURLResponse devuelve nil para la request particular.

A continuación se muestra el código que estoy usando para esto:

Creación de caching personalizada:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024 diskCapacity:1024*1024*5 diskPath:nil]; [NSURLCache setShanetworkingURLCache:urlCache]; } 

Servidor de llamada y object en caching:

 -(void)serverCall { NSURLCache *urlCache = [NSURLCache shanetworkingURLCache]; NSString *urlString = nil; NSHTTPURLResponse *response = nil; NSError *error = nil; urlString = [NSString stringWithFormat:@"%@%@",BASE_URL,url]; urlString = [urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; NSURL *finalUrl = [NSURL URLWithString:urlString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:finalUrl]; request.cachePolicy = NSURLRequestReturnCacheDataElseLoad; NSData *data = nil; if ([self checkInternetConnection]) { data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:response data:data]; [urlCache storeCachedResponse:cachedResponse forRequest:request]; } else { NSCachedURLResponse *cachedResponse = [urlCache cachedResponseForRequest:request]; response = cachedResponse.response; data = cachedResponse.data; } } 

Puedo ver que caches.db en la ruta de la biblioteca de la aplicación se guarda la respuesta. Pero cuando bash leerlo en modo sin connection (después de que la aplicación se mata desde el background), la respuesta almacenada en caching está llegando a cero. Pasé por los siguientes enlaces (y muchos más), pero no pude encontrar la solución a mi problema.

NSURLCache Problema con respuesta de caching

Cómo utilizar NSURLCache para devolver las respuestas de la API en caching cuando está fuera de línea (aplicación de iOS)

http://twobitlabs.com/2012/01/ios-ipad-iphone-nsurlcache-uiwebview-memory-utilization/

http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

Omitir el encabezado de respuesta http Cache-Control: ¿cómo establecer la caducidad del caching?

He comprobado los campos del encabezado http y el encabezado en caching en la respuesta api y el problema no es el del server.

También he intentado proporcionar una ruta de acceso en diskPath param al crear la memory caching personalizada, pero luego ni siquiera carga el object en caching mientras la aplicación está en primer plano y se desconecta de Internet. También he cambiado la date de caducidad, pero el trabajo sigue siendo el mismo.

He intentado usar SDURLCache pero estoy enfrentando el problema similar. Sin embargo, he logrado esto con ASIHTTPRequest, pero no quiero usarlo porque ya he escrito todas las operaciones del server una vez y tengo que cambiar todas las requestes con el método ASIHTTPRequest.

Por favor ayúdenme a encontrar una solución para esto. Gracias por adelantado….