从S3Bucket下载的部分图像在AWS IOS SDK中显示为黑色

时间:2015-09-15 19:44:42

标签: ios swift amazon-s3 aws-sdk

我使用以下代码使用AWS IOS SDK从S3Bucket下载图像

      let s3BucketName = "mybucket"
        let fileName = "filename.png"

        let downloadFilePath = documentDirectory.stringByAppendingPathComponent(fileName)
        let downloadingFileURL = NSURL.fileURLWithPath(downloadFilePath)

        let downloadRequest = AWSS3TransferManagerDownloadRequest()
        downloadRequest.bucket = s3BucketName
        downloadRequest.key  = "\(folder)\(fileName)"
        downloadRequest.downloadingFileURL = downloadingFileURL

         transferManager.download(downloadRequest).continueWithSuccessBlock({
            (task: BFTask!) -> BFTask! in
            dispatch_async(dispatch_get_main_queue(), {

                var image = UIImage(named: "\(documentDirectory)/\(fileName)")
                imageView.image = image
                loaderCellView.hidden = true
            })
            return nil
        })

enter image description here 每当图像被下载时,图像的某些部分变黑。但是当我在S3 Bucket中查看图像时,它会在那里正确显示。这种情况有时发生,有时不发生所以我正在寻找解决方案。见附图。任何人都可以帮助我吗?我会非常感激。

1 个答案:

答案 0 :(得分:0)

我自己解决了。我升级了我的AWS SDK并用AWSTask替换了BFTask。它对我来说就像一个魅力。 AWS推出了新的个人框架AWSMobileAnalytics.framework,它引入了AWSTask代替Bolt的BFTask。因此,从现在起,AWS现在已经拥有独立的框架AWSMobileAnalytics.framework,因此不再依赖Bolt框架来运行上传或下载文件的后台进程。下载最新的SDK。删除旧SDK中包含的所有json。然后删除旧SDK的所有框架文件。然后添加来自" frameworks"的所有框架文件。新下载的SDK中的文件夹。在桥接标题中,您只需要更改行" #import< AWSCore / AWSCore.h>"到" #import< AWSMobileAnalytics / AWSMobileAnalytics.h>"。希望它能帮助任何面临同样问题的人。