3
似乎这应该是相对简单的。我正在使用适用于iOS的AWS开发工具包(v2),我正尝试下载.png文件并将其显示到UIImage中的屏幕上。一切真的有用!只是很奇怪......适用于iOS的AWS S3 SDK v2 - 将图像文件下载到UIImage
这里是我的代码:
AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithAccessKey:@"MY_ACCESS_KEY" secretKey:@"MY_SECRET_KEY"];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSWest1 credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
AWSS3 *transferManager = [[AWSS3 alloc] initWithConfiguration:configuration];
AWSS3GetObjectRequest *getImageRequest = [AWSS3GetObjectRequest new];
getImageRequest.bucket = @"MY_BUCKET";
getImageRequest.key = @"MY_KEY";
[[transferManager getObject:getImageRequest] continueWithBlock:^id(BFTask *task) {
if(task.error)
{
NSLog(@"Error: %@",task.error);
}
else
{
NSLog(@"Got image");
NSData *data = [task.result body];
UIImage *image = [UIImage imageWithData:data];
myImageView.image = image;
}
return nil;
}];
当这段代码执行后,continueWithBlock得到执行,没有任务的错误,所以了图像记录。这很快发生。但是,直到大约10秒钟之后,UIImageView才会在屏幕上更新。我甚至跑过了调试器,看看NSLog(@"Got image");
系列之后的任何行是否花了很长时间,但没有。它们都执行得非常快,但是UIImageView不会在UI上更新。
谢谢,作品像一个魅力;)总是很高兴听到你正在努力与图书馆的创造者。 –
顺便提一下,我注意到它实际上需要几秒钟才能下载一个小图像,但我认为如果我利用CloudFront将会解决此问题 –
[task.result body]是NSURL的一个实例,而不是NSData。在aws-ios-sdk-2.1.2上测试 – Javan