2016-04-25 5 views
0

pngファイルをs3にアップロードしてから、s3ファイルURLをFirebase json形式で保存します。 s3部分は正常に動作しますが、Firebase関数は何とかアセンブリコードに入り、実行されません。ファイルをs3にアップロードしてFirebaseに保存する - Swift 2.2

私が手のメッセージは次のとおりです。

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

transferManagerブロック内の何かが呼び出されますか?すなわち、そのブロック内にprintステートメントを追加して、そこに到達するかどうかを確認します。また、ブロックから期待される戻り値がありますか(return nil?)?最後に、**これは**実行しない**意味ですか?それは決してその行になるか、またはその行で*クラッシュしますか? – Jay

+0

「アップロード先:\ n \(self.s3URL)」が表示されます。 メソッドupdateFirebase(url:NSURL)が実行されず、代わりに「Firebaseが最適化されてコンパイルされました。ステッピングが異常に動作する可能性があります;変数が使用できない可能性があります。コンソールで印刷されます つまり、let = self.userRef .......... とref.updateChildValues ........... –

答えて

0

1つの可能性は、ビルド設定がデバッグの代わりにリリースに設定されていることです。その設定は、[プロジェクト設定]で[結合されていて、Swiftコンパイラ - コード生成]の一番下にあります。デバッグは[なし]で、リリースは[高速]にする必要があります。私はそれらがデフォルト設定だが、チェックの価値があると思う。

2回目はビルド構成が間違っている。ウィンドウの上部にあるプロジェクト名を選択し、Edit Schemaにプルダウンし、Build ConfigurationをDebugに設定する必要があります。

私はこれを1年ほど前に実行しました。新しいプロジェクトを作成してファイルをインポートするほうが速かったです。

関連する問題