2017-06-13 12 views
0

Ich folge einem Video-Tutorial zum Erstellen von Twitter-Klon. Dieses Tutorial wurde mit swift 2 geschrieben. Ich habe versucht, mich für Swift 3 zu bewerben. Aber im 3. Video habe ich ein Problem. Ich kann Tweets speichern, aber ich weiß nicht, wie es in der Tabellenansicht angezeigt werden kann. Er wird mit dieser Linie:Reload Daten in der Tabellenansicht Firebase mit Swift 3

let tweet = tweets[(self.tweets.count-1) - indexPath.row]!.value["text"] as! String 

Video Serien: twitter clone with firebase

Projekt hier: Github Link

Mein Problem hier:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell: HomeViewTableViewCell = tableView.dequeueReusableCellWithIdentifier("HomeViewTableViewCell", forIndexPath: indexPath) as! HomeViewTableViewCell 


    let tweet = tweets[(self.tweets.count-1) - indexPath.row]!.value["text"] as! String 

    cell.configure(nil,name:self.loggedInUserData!.value["name"] as! String,handle:self.loggedInUserData!.value["handle"] as! String,tweet:tweet) 


    return cell 
} 

Fehler: "mehrdeutiger Verweis auf Mitglied count".

+0

Sie müssen den Fehler –

Antwort

0

Endlich habe ich mein Problem gelöst. Update wie folgt für Swift 3.1:

self.homeTableView.insertRows(at: [IndexPath(row:self.tweets.count-1,section:0)], with: UITableViewRowAnimation.automatic) 

Ich habe den obigen Code in ViewDidLoad verwendet. Und ich benutze Tweets [indexPath.row].

0

Um den Tweet anzuzeigen, müssen Sie einen Beobachter zu Ihrer Firebase Real-Time Database hinzufügen.

self.databaseRef.child("user_profiles").child(self.loggedInUser!.uid).observeSingleEventOfType(.Value) { (snapshot:FIRDataSnapshot) in 

     //store the logged in users details into the variable 
     self.loggedInUserData = snapshot 
     print(self.loggedInUserData) 

     //get all the tweets that are made by the user 

     self.databaseRef.child("tweets/\(self.loggedInUser!.uid)").observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in 


      self.tweets.append(snapshot) 


      self.homeTableView.insertRowsAtIndexPaths([NSIndexPath(forRow:0,inSection:0)], withRowAnimation: UITableViewRowAnimation.Automatic) 

      self.aivLoading.stopAnimating() 

     }){(error) in 

      print(error.localizedDescription) 
     } 

    } 

Wenn man sich den folgenden Abschnitt sehen,

self.databaseRef.child("tweets/\(self.loggedInUser!.uid)").observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in 
     self.tweets.append(snapshot)  
     self.homeTableView.insertRowsAtIndexPaths([NSIndexPath(forRow:0,inSection:0)], withRowAnimation: UITableViewRowAnimation.Automatic) 

     self.aivLoading.stopAnimating() 

    }){(error) in 

     print(error.localizedDescription) 
    } 

Er ist einen Beobachter zur Datenbank hinzugefügt und zu jeder Zeit gibt es Knoten mit der Referenz hinzugefügt bekommt, wird der obige Code ausgelöst werden. Überprüfen Sie, ob Sie das richtig gemacht haben.

Falls Sie dies richtig gemacht haben, stellen Sie sicher, dass Sie den Beobachter zum exakten Knoten hinzugefügt haben. Hier ist der Beobachter an einen Knoten mit der Bezeichnung tweet ->userID angeschlossen. Wenn Sie eine andere Datenbankkonfiguration haben, ist Ihre Referenz anders.

Während Sie lernen, würde ich die Konvertierung zu Swift 3-Syntax auf Sie verlassen.

+0

Vielen Dank, aber mein Problem nicht hier. Ich habe die Frage aktualisiert. – Mayday

Verwandte Themen