2016-12-12 119 views
0

我已经通过遵循AWS移动集线器集成页面的指示,将swift 2.3中编写的ios项目与AWS集成。在说明从s3存储区下载文件的页面中,它提供了一个函数,该函数使用AWSContent类型参数。我想使用该功能从S3存储桶下载特定的文件。我尝试使用AWSUserFileManager的contentWithKey成员与我的文件名和路径,但得到“发现零,同时展开可选值”错误。任何人都可以指出我正确的方向吗?谢谢。从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()”)分配管理变量。我只是发布了像我这样的开发人员,他们已经与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.") 
     }) 
} 

} 
相关问题