如何使用NSCachedURLResponse

时间:2012-03-29 21:48:05

标签: iphone ios nsurlconnection nsurlcache

我正在尝试保存通过NSURLConnection方法返回给我的不同数据集。

这是我的connectionDidFinishLoading方法,目前正在将每个单独的数据传递给解析器。作为一方,我没有将NSURLMutableRequest缓存策略设置为 NSURLRequestUseProtocolCachePolicy

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{    
    if ([methodName isEqualToString:@"GetRub"]) 
    { 
        [engineResponses GetRub:receivedData];
    }
    else if ([methodName isEqualToString:@"GetMag"]) 
    {
        [engineResponses GetMag:receivedData];
    }
    else if ([methodName isEqualToString:@"GetSub"])
    {
        [engineResponses GetSub:receivedData];
    }
}

重新上限:上面的方法接收请求的数据集,然后根据请求将它传递给解析器类中的正确方法。

GetRub,GetMag,GetSub。

我想在这里尝试做的是使用NSURLCacheResponse方法捕获数据,就像我上面所做的那样,然后检查可能的缓存等,如果有的话,然后将缓存的数据传递给解析器,这通常是由上面列出的方法处理。

以下是我为缓存尝试的内容。而不是让connectionDidFinishLoading重新获取数据..我想我想要这个方法来做,所以我会尝试在整理缓存后从这个方法中调用engineResponses方法。

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
    if ([methodName isEqualToString:@"GetRub"]) 
    { 
        NSCachedURLResponse *ICRub = cachedResponse;

        ICRub = nil;
        NSDictionary *newUserInfo;
        newUserInfo = [NSDictionary dictionaryWithObject:[NSDate date] forKey:@"Cached Date"];                                                                             
        ICRub = [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response] data:[cachedResponse data] userInfo:newUserInfo storagePolicy:[cachedResponse storagePolicy]];                                                                     

    }
//other caches below here.

这就是我试图做的事情,但是目前它还没有用,它从未实现过这种方法。另外我不知道如何将缓存数据发送到我的解析器类..那些是我的主要问题atm,另一个问题是你认为这是一个非常好的解决方案吗?

任何帮助将不胜感激:)

0 个答案:

没有答案