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")
}
任意の助けに感謝!
transferManagerブロック内の何かが呼び出されますか?すなわち、そのブロック内にprintステートメントを追加して、そこに到達するかどうかを確認します。また、ブロックから期待される戻り値がありますか(return nil?)?最後に、**これは**実行しない**意味ですか?それは決してその行になるか、またはその行で*クラッシュしますか? – Jay
「アップロード先:\ n \(self.s3URL)」が表示されます。 メソッドupdateFirebase(url:NSURL)が実行されず、代わりに「Firebaseが最適化されてコンパイルされました。ステッピングが異常に動作する可能性があります;変数が使用できない可能性があります。コンソールで印刷されます つまり、let = self.userRef .......... とref.updateChildValues ........... –