3

我正在尝试保存通过我的 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,另一个问题是你认为这是一个很好的解决方案吗?

任何帮助将不胜感激 :)

4

0 回答 0