2017-08-12 27 views
2

私が選択したビデオのサムネイルを取得しようとしています。イメージをファイアベースにアップロードするときにスウィフトアプリがクラッシュする

それは、サムネイルを作成しないように思えるが、それは私が信じているthumbnailStorageRefでクラッシュし

をfirebaseするためにそれをアップロードする際には、クラッシュします。

ここに関連するコードです:エラーコンソールをクラッシュすると言うとき

guard let imagePickerUrl = info[UIImagePickerControllerMediaURL] as? URL else { return } 
let videoUrl = imagePickerUrl 

// Generate image thumbnail. 

let asset: AVAsset = AVAsset(url: videoUrl as URL) 
let imageGenerator = AVAssetImageGenerator(asset: asset) 
imageGenerator.appliesPreferredTrackTransform = true 
var time = asset.duration 
time.value = min(time.value, 3) 

do { 
    let thumbnailImage = try imageGenerator.copyCGImage(at: time , actualTime: nil) 
    let image = UIImage(cgImage: thumbnailImage) 
    let imageData = UIImagePNGRepresentation(image)! 

    let thumbnailStorageRef = FIRStorage.storage().reference() 
    thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 

    thumbnailStorageRef.put(imageData, metadata: nil, completion: { (thumbnailMeta, error) in 
     if error != nil { 
      print("An error has occured while uploading thumbnail:",error ?? "") 
     } else { 
      print("Thumbnail upload to database was successfull", thumbnailMeta?.downloadURL() ?? "") 
     } 
    }) 
} catch { 
    print("An error has occurred while making thumbnail:") 
} 

2017年8月11日17:19:08.656コアラ[17914:491998] *が原因のアプリを終了〜 未知の例外 'NSInvalidArgumentException'、理由: '* - [__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:オブジェクト[1]からオブジェクトを挿入しようとしました' ***最初にコールstac k:

このエラーメッセージの内容はわかりません。アップロードしようとしている画像がnilである可能性はありますか?よく分かりません。

+1

ワイルド推測:あなたの画像データはnilです。 – Glenn

+0

私はちょうどletを使って安全にアンラップし、imageDataがnilではないことを示しています –

+0

@Glenn画像データが "233912 bytes" –

答えて

4

作成したばかりの子供ストレージノードを忘れたようです。代わりに、これと

thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 
thumbnailStorageRef.put(imageData, metadata: nil, completion: ... 

:このコードを交換してみてください

let imageRef = thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 
imageRef.put(imageData, metadata: nil, completion: ... 

この変更あなたの現在の問題を修正する必要があります;)

+0

それは働いている!どうもありがとうございます! –

+0

@ErikBatistaニース、知っておいてよろしいですか?)さようなら、チャンスを取ったときに受け入れられた答えとしてマークしてください、ありがとう! –

関連する問題