Я очень смущен системой кэширования iOS.Это должно быть просто, но это не так (для меня).Я пишу приложение для базы данных, которое обеспечивает внешний веб-доступ к ограниченному кругу дополнительных справочных материалов в виде веб-страниц.Иногда пользователю может понадобиться доступ к внешним веб-страницам, когда они находятся в поле, где нет данных WiFi или сотовой сети.Я подумал, что просто использовать URLCaching, просматривая множество внешних страниц в то время, когда Интернет доступен.Затем используйте политику запроса NSURLRequestReturnCacheDataElseLoad.Итак, я создал общий кэш в AppDelegate, затем одноэлементный сеанс:
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.URLCache = self->_myCache;
sessionConfig.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
sessionConfig.HTTPMaximumConnectionsPerHost = 5;
session = [NSURLSession sessionWithConfiguration:sessionConfig
delegate:self
delegateQueue:nil];
Затем заполните кэш с помощью dataTask (поскольку пробная версия downloadTask не заполнила кэш):
NSURLSessionDataTask *myTask = [[NSURLSessionDataTask alloc] init];
do {
myTask = [self.session dataTaskWithRequest:req];
myTask.taskDescription = searchName; //Iterating several values of searchName
[myTask resume]; } while ...searchNames...
Это заполняет кеш, о чем свидетельствуют cache.currentDiskUsage и cache.currentMemoryUsage.Запустите веб-цикл чтения после того, как начальные выборки больше не увеличивают размер кэша.
Вот проблема: При запуске этого фрагмента кода с отключенным интернетом невозможно прочитать из кэша
NSURL *nsurl=[NSURL URLWithString:@"https:searchName"];
NSURLRequest *nsrequest = [NSURLRequest requestWithURL:nsurl cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];
[_webView loadRequest:nsrequest];
Кроме того, после заполнения кеша попытка повторить начальный раунд выборок с отключенным Интернетом приводит к
TIC TCP Conn Failed [1:0x6000028ce580]: 1:50 Err(50)
Нет ли совместимости кеша между HTTP, если он заполнен dataTask, и чтением изкеш с NSURLRequest?Что я делаю неправильно?Есть ли другой подход для решения моей дизайнерской задачи?