繁体   English   中英

将图像上传到firebase时,Swift应用程序崩溃了

[英]Swift app crashes when uploading image to 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 Koala [17914:491998] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* - [__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从对象插入nil对象[ 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: ...

此更改应修复您当前的问题;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM