2016-12-12 3 views
0

У меня есть проект ios, написанный в swift 2.3, который интегрирован с AWS, следуя инструкциям на странице интеграции сотового узла AWS. На странице, которая объясняет загрузку файла из s3 bucket, он предоставляет функцию, и эта функция принимает параметр типа AWSContent. Я хотел бы использовать эту функцию для загрузки определенного файла из ведра S3. Я пробовал использовать член contentWithKey AWSUserFileManager с моим именем и путем, но получаю сообщение «found nil while unwrapping optional value». Может ли кто-нибудь указать мне в правильном направлении? Благодарю.Загрузка определенного файла из ведра S3

private var manager: AWSUserFileManager! 
class S3Access: NSObject { 


    func setupS3Acess() { 
    let x = manager.contentWithKey("public/GMG.csv") 
    downloadContent(x, pinOnCompletion: false) 
    } 

    // This code is from Amazon MobileHub integration page 
    private func downloadContent(content: AWSContent, pinOnCompletion: Bool) { 
    content.downloadWithDownloadType(
     .IfNewerExists, 
     pinOnCompletion: pinOnCompletion, 
     progressBlock: {[weak self](content: AWSContent?, progress: NSProgress?) -> Void in 
      guard self != nil else { return } 
      /* Show progress in UI. */ 
     }, 
     completionHandler: {[weak self](content: AWSContent?, data: NSData?, error: NSError?) -> Void in 
      guard self != nil else { return } 
      if let error = error { 
       print("Failed to download a content from a server. \(error)") 
       return 
      } 
      print("Object download complete.") 
     }) 
} 

} 

ответ

0

Я нашел преступника. Мне нужно назначить переменную менеджера с файловым менеджером по умолчанию, например, «manager = AWSUserFileManager.defaultUserFileManager()». Я просто отправляю это для dev, как я, который уже интегрирован с AWS-библиотеками в проект и не требует дополнительной настройки проверки подлинности.

private var manager: AWSUserFileManager! 
class S3Access: NSObject { 


    func setupS3Acess() { 
    manager = AWSUserFileManager.defaultUserFileManager() 
    let x = manager.contentWithKey("public/GMG.csv") 
    downloadContent(x, pinOnCompletion: false) 
    } 

    // This code is from Amazon MobileHub integration page 
    private func downloadContent(content: AWSContent, pinOnCompletion: Bool) { 
    content.downloadWithDownloadType(
     .IfNewerExists, 
     pinOnCompletion: pinOnCompletion, 
     progressBlock: {[weak self](content: AWSContent?, progress: NSProgress?) -> Void in 
      guard self != nil else { return } 
      /* Show progress in UI. */ 
     }, 
     completionHandler: {[weak self](content: AWSContent?, data: NSData?, error: NSError?) -> Void in 
      guard self != nil else { return } 
      if let error = error { 
       print("Failed to download a content from a server. \(error)") 
       return 
      } 
      print("Object download complete.") 
     }) 
} 

} 
Смежные вопросы