2016-08-16 1 views
1

Ich versuche, ein Bild von S3, um es zwischenzuspeichern. Diese ohne Caching funktioniert:AWSMobileHub Caching Bilder von S3 in IOS mit Swift

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!) 
     }) 

Und das mit Caching funktioniert nicht:

 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) 
    } 

ich in Fehler nach Abschluss: domain: "com.amazonaws.AWSContentManager.ErrorDomain" - Code: 1

Was ist falsch in meinem Code?

Antwort

0

Ich finde es heraus. Es ist notwendig, den Fortschritt zu nutzen!

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) 
    } 
-1

Es könnte sein, weil es den gleichen Inhalt lädt, während der andere noch heruntergeladen wird. Zumindest ist das mein Problem.