我有一个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