显示您关注的用户的post – swift

我做了一个以下function,用户可以互相关注。 问题是它没有按照应有的方式使用。 在用户撰写post时,它将在此引用下保存在我的Firebase数据库中:

FIRDatabase.database().reference().child("feed-items").childByAutoId()

所有post都是Feed-items。 我现在正在更改它,所以当用户发布某些内容时,它将保存在此处:

FIRDatabase.database().reference().child("Users").child(UserID).child("Posts").childByAutoId()

我这样做是因为它以某种方式告诉我,只显示您在我的应用Feed中关注的人的post会更容易。

目前,我收到了我的Feed(来自Feed-items)的所有post,如下所示:

 func startObersvingDB() { FIRDatabase.database().reference().child("feed-items").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in var newUpdates = [Sweet]() for update in snapshot.children { let updateObject = Sweet(snapshot: update as! FIRDataSnapshot) newUpdates.append(updateObject) } self.updates = newUpdates.reverse() self.tableView.reloadData() }) { (error: NSError) in print(error.description) } } 

然后我在viewDidLoad中调用startObservingDB()。

如果你想在这里看到我的Sweet结构,它是:

 import Foundation import FirebaseDatabase import FirebaseAuth import UIKit struct Sweet { let key: String! let content: String! let addedByUser: String! let profilePhoto: String! let itemRef: FIRDatabaseReference? init (content: String, addedByUser: String, profilePhoto: String!, key: String = "") { self.key = key self.content = content self.addedByUser = addedByUser self.profilePhoto = profilePhoto self.itemRef = nil } init (snapshot: FIRDataSnapshot) { key = snapshot.key itemRef = snapshot.ref path = key if let theFeedContent = snapshot.value!["content"] as? String { content = theFeedContent } else { content = "" } if let feedUser = snapshot.value!["addedByUser"] as? String { addedByUser = feedUser } else { addedByUser = "" } if let feedPhoto = snapshot.value!["profilePhoto"] as? String! { profilePhoto = feedPhoto } else { profilePhoto = "" } } func toAnyObject() -> AnyObject { return ["content":content, "addedByUser":addedByUser, "profilePhoto":profilePhoto!] } } 

在我的TableViewController中,我使用它来显示自定义单元格中的名称等:

 var update = updates[indexPath.row] cell.nameLabel.text = update.addedByUser 

等等

我的问题是: 如何将其更改为仅显示我关注的人的post?

对不起,很长的post

假设您将关注者列表保存为其他父节点中的字典,如下所示: –

 user_followed_by :{ userID2 : { userID1 : true, userID5 : true, userID6 : true, userID12 : true, userID99 : true, } } users :{ userID2 :{ post :{ postAutoID1 : {...}, postAutoID2 : {...}, ... } } } postsToShowToUser :{ userID1 : { postAutoID1 : true, //These are the post's autoID's of all the users whom // your current user is following postAutoID5 : true, postAutoID3 : true, }, } /* // If you choose to declare a separate section of the post Details in your Database. posts_Of_The_User :{ userID1 : { postAutoID1 : {...//DETAILS}, postAutoID2 : {...//DETAILS}, postAutoID3 : {...//DETAILS}, .... }, } */ 

这个想法是,只要当前用户关注的用户发布post。 该post的autoID被附加在postsToShowToUser / userID中

也就是说,如果userID2将发布post,则将进行调用以将该post的autoID附加到跟随userID2的所有用户postsToShowToUser / userID中。

PS: –我强烈建议您将post详细信息移出post部分。 使它成为一个单独的父节点,由多个postAutoID组成,并将数据作为值发布。 它可能会在以后派上用场,也可以避免嵌套数据,这将有助于您浏览数据库。