NSURLConnection не обновляет - PullRequest
3 голосов
/ 20 июня 2011

У меня есть NSURLConnection, который я звоню каждый раз, когда вызывается -(void)viewWillAppear:animated (это только сейчас, это только для тестирования)

Я делаю это так

receivedData = [[NSMutableData data] retain];
NSString *urlString = @"<URL hidden>";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30.0];
[NSURLConnection connectionWithRequest:request delegate:self];

Тогда у меня есть три метода делегата:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [receivedData appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *returnString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    usersPhotos = [[NSMutableArray alloc] initWithArray:[[returnString JSONValue] objectForKey:@"data"]];
    [self loadAnnotations];

    NSLog(@"%@", returnString);

    [returnString release];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    [self loadAnnotations];
}

Даже если я уверен, что returnString должен измениться (я могу зайти на сайт в urlString и подтвердить, что он изменился), он всегда одинаков.

Это как если бы он повторно использовал данные, которые он извлекает из первого соединения.

Кто-нибудь знает, почему это так?

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

это должна быть ваша политика кэширования, через секунду я обновлю правильную информацию


UPDATE

Попробуйте установить свою политику cahce: cachePolicy:NSURLRequestReloadIgnoringCacheData

Должно быть:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0];
0 голосов
/ 20 июня 2011

Вам необходимо очистить буфер, если вы его снова используете.

Добавить этот метод:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{   
    [receivedData setLength:0];
}
...