2016-04-25 38 views
0

我想上传一个png文件到s3,然后将s3文件url存储为Firebase json格式。 s3部分工作正常,但Firebase函数以某种方式进入汇编代码并且不运行。将文件上传到s3然后将URL存储在Firebase中 - Swift 2.2

,我得到的消息是:

火力地堡被编译优化 - 步进可能行为古怪;变量可能不可用。

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

TransferManager块中的任何内容是否被调用?即在该块中添加一条打印语句并查看它是否到达那里。另外,是否有某种期望的返回值(返回nil?)。最后,**这不运行**是什么意思?它永远不会到达那条线,或者它在*那条线上崩溃* – Jay

+0

它被调用,“上传到:\ n \(self.s3URL)”被打印出来。 updateFirebase(url:NSURL)方法不运行,而是“Firebase编译为优化 - 步进可能表现异常;变量可能不可用”。打印出来在控制台 即让ref = self.userRef .......... 和ref.updateChildValues ........... –

回答

0

一种可能性是您的构建设置被设置为释放而不是调试。该设置位于项目设置中,然后合并到Swift编译器 - 代码生成的底部。调试应该是None并且发布应该是快速的。我认为这些是默认设置,但值得一检查

第二个将是构建配置是错误的。在窗口顶部选择您的项目名称,然后下拉到编辑架构,并将生成配置设置为调试。

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

相关问题