Swift - Ханеке не работает с AWS SDK

Я пытаюсь интегрироваться с AWS SDK, но изображение не отображается.

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCollectionViewCell", forIndexPath: indexPath) as! MyCollectionViewCell

        let downloadURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("myImage.jpg")
        let downloadRequest = AWSS3TransferManagerDownloadRequest()
        downloadRequest.bucket = "stg"
        downloadRequest.key = "myImage.jpg"
        downloadRequest.downloadingFileURL = downloadURL

        let transferManager = AWSS3TransferManager.defaultS3TransferManager()
        transferManager.download(downloadRequest).continueWithBlock { (task) -> AnyObject! in
            if task.error != nil {
                print("Failed to download S3 with error \(task.error)")
            }

            if task.result != nil {
                //let output = task.result as! AWSS3TransferManagerDownloadOutput
                cell.imageView.contentMode = UIViewContentMode.ScaleAspectFit
                cell.imageView?.hnk_setImageFromURL(downloadURL)
            }
            return nil
        }
        return cell
    }

Пожалуйста посоветуй. Спасибо.

1 ответ

Проблема в том, что вы обновляете пользовательский интерфейс в фоновом потоке. Вы должны заменить .continueWithBlock { (task) -> AnyObject! in с .continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: { (task) -> AnyObject! in запустить блок в главном потоке.

Кроме того, если вы пишете новое приложение, я рекомендую использовать AWSS3TransferUtility вместо AWSS3TransferManager поскольку мы сосредоточим наши усилия на разработке на утилите переноса и прекратим поддержку менеджера переноса.

Другие вопросы по тегам