2

S3 からイメージをダウンロードしてキャッシュしようとしています。これはキャッシュなしで機能しています:

let manager = AWSUserFileManager.defaultUserFileManager()
let content = manager.contentWithKey("public%2F" + userID + "_profile.jpg")
content.getRemoteFileURLWithCompletionHandler({[weak self](url: NSURL?, error: NSError?) -> Void in
guard let url = url else {
         print("Error getting URL for file. \(error)")
         return
         }
         let imageData = NSData(contentsOfURL: url)
         imageView.image = UIImage(data: imageData!)
         })

そして、これはキャッシングでは機能しません:

      let content = manager.contentWithKey("public%2F" + userID + "_profile.jpg")
    if !content.cached {
        print("Not Cached")
        imageView.image = UIImage(named: "UserIcon")
        content.downloadWithDownloadType(AWSContentDownloadType.IfNewerExists, pinOnCompletion: false, progressBlock: nil, completionHandler: { (content: AWSContent?, data: NSData?, error: NSError?) -> Void in
                print("Cached")
                imageView.image = UIImage(data: data!)
        })
    } else {
        print("Cached2")
        imageView.image = UIImage(data: content.cachedData)
    }

完了後にエラーが発生します: domain: "com.amazonaws.AWSContentManager.ErrorDomain" - code: 1

私のコードで何が間違っていますか?

4

2 に答える 2

0

私はそれを見つけます。進行状況を使用する必要があります!

 if !content.cached {
        print("Not Cached")
        imageView.image = UIImage(named: "UserIcon")
        content.downloadWithDownloadType(AWSContentDownloadType.IfNewerExists, pinOnCompletion: false, progressBlock: {(content: AWSContent?, progress: NSProgress?) -> Void in
             return
            }, completionHandler: { (content: AWSContent?, data: NSData?, error: NSError?) -> Void in
            if let error = error {
               print("Failed to download a content from a server.)")
                print("Error " + error.debugDescription)
                return
                }
            print("Cached")
            imageView.image = UIImage(data: data!)

        })
    } else {
        print("Cached2")
        imageView.image = UIImage(data: content.cachedData)
    }
于 2016-08-17T16:06:56.657 に答える
-1

他のコンテンツがまだダウンロードされている間に、同じコンテンツをダウンロードしていることが原因である可能性があります。少なくともそれは私の問題です。

于 2016-10-09T15:32:00.663 に答える