我有一個IOS應用程序使用azure存儲blob jpg照片。我的問題是檢索blob顯示。我的天藍色blob永遠不會返回,但沒有錯誤是
大多數情況下他們檢索得很好。但偶爾一個奇怪的將不會被退回。而是返回749字節,但錯誤仍然= nil。
現在,這會很好,真的沒有問題。但是,每次我嘗試再次檢索該blob時,都會發生同樣的問題。 所有周圍的斑點都會返回正常。有問題的斑點很好,可以使用其他設備進行檢索。
我花了很多時間清除所涉及的所有變量,並回顧了所討論的blob,無論返回的只有749個字節。從設備上刪除應用程序並重新安裝它是唯一的解決方法!
所以我認爲Azure存儲或移動服務認爲返回的數據是可以的(因爲它沒有錯誤)並且一直髮送相同的數據 - 我如何防止並要求真正的重試?
低於實際檢索代碼爲github上的禮貌:謝謝Ajayi13這幾乎是真棒
[request fetchDataWithBlock:^(NSData* data, NSError* error)
{
if(error)
{
if(block)
{
block(nil, error);
}
else if([(NSObject*)_delegate respondsToSelector:@selector(storageClient:didFailRequest:withError:)])
{
[_delegate storageClient:self didFailRequest:request withError:error];
}
return;
}
if(block)
{
block(data, nil);
}
else if([(NSObject*)_delegate respondsToSelector:@selector(storageClient:didGetBlobData:blob:)])
{
[_delegate storageClient:self didGetBlobData:data blob:blob];
}
}];
我現在已經添加基於AdamSorrin的響應下面的代碼和博客文章由丹尼爾PASCO:https://blackpixel.com/writing/2012/05/caching-and-nsurlconnection.html
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)[cachedResponse response];
// Look up the cache policy used in our request
if([connection currentRequest].cachePolicy == NSURLRequestUseProtocolCachePolicy) {
NSDictionary *headers = [httpResponse allHeaderFields];
NSString *cacheControl = [headers valueForKey:@"Cache-Control"];
NSString *expires = [headers valueForKey:@"Expires"];
if((cacheControl == nil) && (expires == nil)) {
NSLog(@"server does not provide expiration information and we are using NSURLRequestUseProtocolCachePolicy");
return nil; // don't cache this
}
}
return nil;
}
但這並沒有固定我的問題:O(
你能鏈接到你正在使用的GitHub代碼,或將其包含在問題中嗎? –
嗨lindydonna,我使用的一些代碼可以在https://github.com/Ajayi13/BlobExample-Swift找到。謝謝 – Pinwheeler