2017-10-28 274 views
-1

大家下午好,我正在尝试上传一个图片到Firebase并显示在一个单元格中..我只是关于除了图片以外的所有内容(我无法摆脱错误) 。Swift 4上传图片到Firebase

Here is the error I am getting

不能调用初始化类型 '帖子' 类型的参数列表 '(postImageStringUrl:字符串,内容:字符串!帖子ID:字符串)'

//[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] 

这里是我的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] }

}

任何帮助将不胜感激...泰

回答

0

你的帖子初始化是

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

,它似乎您试图与

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

基本上只是将其初始化在初始化中缺少一些参数;部门,用户名

+0

你这么对!谢谢...我试图不使用部门,内容&&用户名我没有意识到它必须在那里 –

+0

@RubenFranco优秀!很高兴我能帮上忙。一定要接受答案,以便它可以帮助他人! – Jay

+0

只是再次感谢.. –