Вы имеете в виду что-то подобное?
NSCachedURLResponse *cachedResponse = nil; // Put your code to get real response
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)[cachedResponse response];
NSData *responseData = [httpResponse data];
NSCachedURLResponse
также имеет прямой метод data
, но я не могу проверить, совпадает ли это с кодом, приведенным выше.
Предложение кеша
Я вижу, что у вас есть свои собственные методы, которые имеют дело с кэшированием. Я бы предложил разделить NSURLCache на подклассы, если вам нужно изменить кэширование и, скажем, добавить автономный режим. Если вы создаете его подкласс и реализуете некоторые методы, например (но не ограничиваясь ими):
– cachedResponseForRequest:
– storeCachedResponse:forRequest:
жизнь может стать легче для вас. Вы бы просто установили глобальный кеш приложения в делегате приложения с помощью вызова [NSURLCache setSharedURLCache:[CustomURLCache new]];
.
Тогда все ваши стандартные NSURL-классы будут вести себя так, как будто они работают с системным кешем, и вам обычно не придется иметь дело с прямыми вызовами, чтобы получить или сохранить кеш, система вызовет их автоматически.