2015-08-16 62 views
4

我正在使用Amazon S3在iOS应用上使用swift存储用户帐户的个人资料图片。我能够从S3获取我想要的图片,但需要很长时间才能加载。我不知道为什么会发生这种情况。这正是S3的工作原理,还是有更好的方式去做事情?这是我的代码下载图片:为什么AWS S3如此之慢? (Swift)

let downloadingFilePath1 = NSTemporaryDirectory().stringByAppendingPathComponent("temp-download") 
     let downloadingFileURL1 = NSURL(fileURLWithPath: downloadingFilePath1) 
     let transferManager = AWSS3TransferManager.defaultS3TransferManager() 
     let readRequest1 : AWSS3TransferManagerDownloadRequest = AWSS3TransferManagerDownloadRequest() 
     readRequest1.bucket = "groopapictures" 
     readRequest1.key = self.searchTextField.text 
     readRequest1.downloadingFileURL = downloadingFileURL1 

     transferManager.download(readRequest1).continueWithBlock { (task) -> AnyObject! in 
      println(task.error) 
      if task.error == nil { 
       self.ppImageView.hidden = false 
       println("Fetched image") 
       self.ppImageView.image = UIImage(contentsOfFile: downloadingFilePath1) 

      } 
      return nil 
     } 

任何帮助,将不胜感激!

回答

2

检查您在返回块中运行的队列。如果它不是主队列,那么设置UIImageViewimage属性可能需要很长时间才能“注意到”并更新。通过将图像分配线放入主线程dispatch_async()中来测试这一点。

如果这没有帮助,请运行Charles并查看S3用于返回图像的时间。

+0

这听起来可能是正确的,但我不知道该怎么做,你能提供一个例子吗? – JFDeveloper

+0

工作正常!非常感谢! – JFDeveloper

+0

很高兴听到它!祝好运与您的其余项目。 –

0

下载速度可能因您的存储区创建区域和您的存取位置而异。请确保在AWS S3中创建存储区时选择地理位置接近您的位置的区域。

This image taken from amazon s3 documentation

您可以参考以下中以link获取有关斗区的想法Amazon S3的文件。

谢谢!