2017-04-04 1 views
0

Ich versuche alle Bilder zu zeigen, die der aktuelle Benutzer veröffentlicht. Wie Sie auf dem Bild in einer Tabellenansicht sehen können, erstellt jedes Mal, wenn der aktuelle Benutzer ein Bild veröffentlicht, automatisch eine eindeutige ID für das Bild unter den aktuellen Benutzerinformationen.Wie man Bilder durch Swift Firebase ihrer Benutzer holt?

screenshot

In diesen Bildern werden Sie sehen, dass, wenn der Benutzer ein Bild per Post mit ihren Kindern einem Knoten namens Medien für das Bild erstellen.

screenshot

Hier ist mein Code:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "CellMe", for: indexPath) as! MyPosttTableViewCell 


    FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).observeSingleEvent(of: .value, with: { (snapshot) in 
    // check if user has photo 
    if snapshot.hasChild("media") != nil{ 
     print("found it") 

    //set image locatin 
    let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("media")" 


    FIRStorage.storage().reference().child(filePath).data(withMaxSize: 10*1024*1024, completion: { (data, error) in 

    let userPhoto = UIImage(data: data!) 
    cell.Myimages.image = userPhoto 

    }) 

    } 
    else { 
     print("nil") 
     } 
     }) 

     return cell 


    }} 

Antwort

0

Die Medien in Ihrem Benutzer-Knoten als NSDictionary gespeichert ist, nicht als String. Sie müssen den Medienknoten durchlaufen, um die Pfade all Ihrer Dateien zu erhalten. Sie können etwas tun wie

//Create reference to media directly instead 
FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).child("media").observeSingleEvent(of: .value, with: { (snapshot) in 
    if let media = snapshot.value as? NSDictionary { 

    //Loop thorugh all the entries in your media node to get all the media paths 
    for (_, value) in media { 
     FIRStorage.storage().reference().child("media").child(value as! String) 

     //get the file now that you have the reference 
    } 
    } 
}) 
+0

Was soll ich unter der for-Schleife schreiben? cell.myimagesimage =? – ASH

Verwandte Themen