Приложение Swift вылетает при загрузке изображения в firebase
Я пытаюсь получить эскиз видео, которое я выбрал.
Кажется, что он создает миниатюру, но вылетает при загрузке в firebase
Он падает на thumbnailStorageRef
Я верю.
Вот соответствующий код:
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-08-11 17: 19: 08.656 Коала [17914: 491998] * Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: '* - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: попытка вставить нулевой объект из объектов [1]' *** Первый стек вызовов вызовов:
Я не знаю, что пытается сказать это сообщение об ошибке, может быть, изображение, которое пытается загрузить, равно нулю? Я не уверен.
1 ответ
Похоже, вы забыли использовать только что созданный дочерний узел хранения. Поэтому попробуйте заменить этот код:
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: ...
Это изменение должно исправить вашу текущую проблему;)