2017-10-28 33 views
-1

Guten Nachmittag alle, ich versuche, ein Bild auf Firebase hochladen und wieder auf einer Zelle .. Ich habe nur über alle Inhalte, außer das Bild funktioniert (ich kann den Fehler loswerden) .Swift 4 Hochladen von Bildern zu Firebase

Here is the error I am getting

Kann nicht Initialisierer für Typ 'Beiträge' mit einer Argumentliste vom Typ aufrufen '(postImageStringUrl: String, Inhalt: String !, postID: String)'

//[Save Image] 
    // Create data in the server 
    let data = UIImageJPEGRepresentation(self.addedImage.image!, 0.5) 
    let metadata = StorageMetadata() 
    metadata.contentType = "image/jpeg" 

    let postId = "\(Auth.auth().currentUser!.uid)\(NSUUID().uuidString)" 
    // Create a reference to the file you want to upload 
    let imagePath = "postImages\(postId)/postPic.jpg" 

    storageRef.child(imagePath).putData(data!, metadata: metadata) { (metadata, error) in 
     if error == nil { 
      let postRef = self.databaseRef.child("posts").childByAutoId() 
      let post = Posts(postImageStringUrl: String (describing: metadata!.downloadURL()), content: descriptionTextView.text, postId: postId) 
      postRef.setValue(post.toAnyObject()) 
     }else{ 
      print(error.debugDescription) 
     } 
    } 
    //[Save Image] 

Hier ist mein postViewController

import Foundation 
import Firebase 
import FirebaseDatabase 
import FirebaseStorage

struct Posts {

var postImageStringUrl: String! var department: String! var content: String! var username: String! var postId: String! var ref: DatabaseReference? var key: String! init(postImageStringUrl: String, department: String, content: String, username: String,postId: String, key: String = ""){ self.postImageStringUrl = postImageStringUrl self.department = department self.content = content self.username = username self.postId = postId self.key = key self.ref = Database.database().reference() } init(snapshot: DataSnapshot){ let snapshotValue = snapshot.value as! NSMutableDictionary self.postImageStringUrl = snapshotValue["postImageStringUrl"] as! String self.department = snapshotValue["department"] as! String self.content = snapshotValue["content"] as! String self.username = snapshotValue["username"] as! String self.postId = snapshotValue["postId"] as! String self.key = snapshot.key self.ref = snapshot.ref } func toAnyObject() -> [String: AnyObject] { return ["postImageStringUrl": postImageStringUrl as AnyObject, "department": department as AnyObject,"content": content as AnyObject,"username": username as AnyObject, "postId": postId as AnyObject] }

}

Jede Hilfe wird sehr geschätzt ... Ty

Antwort

0

Ihre Beiträge init ist

init(
    postImageStringUrl: String, 
    department: String, 
    content: String, 
    username: String, 
    postId: String, 
    key: String = "") 

und es scheint, Sie versuchen, es zu initialisieren mit

let post = Posts(
      postImageStringUrl: String (describing: metadata!.downloadURL()), 
      content: descriptionTextView.text, 
      postId: postId) 

Im Grunde nur einige Parameter in der Initialisierung fehlen; Abteilung, Benutzername

+0

Ihr so ​​richtig !!! danke ... ich habe versucht, nicht Abteilung, Inhalt && Benutzername zu verwenden Ich habe nicht bemerkt, dass es dort sein musste –

+0

@RubenFranco Ausgezeichnet! Froh, dass ich helfen konnte. Achten Sie darauf, die Antwort zu akzeptieren, damit es anderen helfen kann! – Jay

+0

habe gerade wieder danke .. –