将文件上传到s3,然后将URL存储在Firebase - Swift 2.2中

时间:2016-04-25 13:49:34

标签: ios swift amazon-s3 firebase swift2

我想将png文件上传到s3,然后将s3文件网址存储为Firebase json格式。 s3部分工作正常,但Firebase功能以某种方式进入汇编代码并且不运行。

我得到的信息是:

  

Firebase是通过优化编译的 - 步进可能表现得很奇怪;变量可能无法使用。

func uploadToS3(writePath: NSURL) {
    let ext = "png"
    let uploadRequest = AWSS3TransferManagerUploadRequest()
    uploadRequest.body = writePath
    uploadRequest.key = NSProcessInfo.processInfo().globallyUniqueString + "." + ext
    uploadRequest.bucket = S3BucketName
    self.s3URL = NSURL(string: "http://s3.amazonaws.com/\(S3BucketName)/\(uploadRequest.key!)")!
    uploadRequest.contentType = "image/" + ext
    let transferManager = AWSS3TransferManager.defaultS3TransferManager()
    transferManager.upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in
        if let error = task.error {
            print("Upload failed ❌ (\(error))")
        }
        if let exception = task.exception {
            print("Upload failed ❌ (\(exception))")
        }
        if task.result != nil {
            print("Uploaded to:\n\(self.s3URL)")
            updateFirebase(self.s3URL) **this doesn't run**
        }
        else {
            print("Unexpected empty result.")
        }
        return nil
    }
}
func updateFirebase(url: NSURL){
   let ref = self.userRef.childByAppendingPath(self.uid).childByAppendingPath("photos")
   ref.updateChildValues([url.absoluteString: true])
    print("updated firebase")
}

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

一种可能性是您的构建设置设置为release而不是debug。该设置在项目设置中然后组合并在Swift编译器的底部 - 代码生成。调试应为None,Release应为Fast。我认为这些是默认设置,但值得检查

第二个是构建配置错误。在窗口顶部选择项目名称,然后下拉到Edit Schema,Build Configuration应设置为Debug。

我在大约一年前遇到过这种情况,只是创建一个新项目并导入文件更快 - 你的milage可能会有所不同。