2017-08-12 5 views
2

Ich versuche, das Miniaturbild des Videos, das ich ausgewählt habe, zu erhalten.Swift App stürzt beim Hochladen von Image auf firebase

Es scheint, wie es die Vorschau funktioniert erstellen, aber es stürzt ab, wenn es das Hochladen

Es befindet sich auf thumbnailStorageRef ich stürzt zu Feuerbasis glauben.

Hier ist der entsprechende Code:

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:") 
} 

Beim Absturz der Fehler-Konsole sagt:

2017-08-11 17: 19: 08,656 Koala [17914: 491998] * App beenden wegen zu Uncaught Ausnahme 'NSInvalidArgumentException', Grund: '* - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: Versuch, Objekt von Objekten einzufügen [1]' *** zuerst Anruf stac werfen k:

Ich weiß nicht, was diese Fehlermeldung versucht zu sagen, vielleicht, dass das Bild, das zum Hochladen versucht, ist Null? Ich bin mir nicht sicher.

+1

wilde Vermutung: Ihre imagedata null ist. – Glenn

+0

Ich wickelte einfach sicher mit wenn es und es sagt das ImageData ist nicht Null –

+0

@Glenn die Bilddaten druckt "233912 Bytes" –

Antwort

4

Es sieht so aus, als hätten Sie vergessen, den untergeordneten Speicherknoten zu verwenden, den Sie gerade erstellt haben. Versuchen Sie diesen Code zu ersetzen:

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

mit diesem statt:

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

Diese Änderung Ihrer aktuellen Problem beheben sollte;)

+0

Das hat es funktioniert! Ich danke dir sehr! –

+0

@ErikBatista Schön, gut zu wissen;) BTW, achten Sie darauf, es als die akzeptierte Antwort zu markieren, wenn Sie eine Chance bekommen, danke! –

Verwandte Themen